关系操作符
小于(<),大于(>),小于等于(<=),大于等于(>=)这几个关系操作符用于对两个值进行比较。这几个操作符都会返回一个布尔值
如下面的例子所示:
var result = 5>3 ; //true
var result2 = 5<3 ; // false
当关系操作符的操作数使用了非数值时,也要进行数据转换完成。
- 如果两个操作数都是数值,则执行数值比较.
- 如果两个操作数都是字符串,则比较两个字符串对应的编码值.
- 如果一个操作数是数值,则将另外那个操作数转换成一个数值,然后比较
- 如果一个操作数是对象,则执行valueof()方法,用得到结果按照前面的规则进行比较,如果对象没有valueof()方法,则调用toString()并用得到的结果一句前面的规则进行比较
- 如果一个操作数是布尔值,则先将其转换为数值,然后在比较.
简单来说就是使用关系操作符比较时候,她会先执行转为数值或者ascii码在比较
var result = "23" < "3"; //结果true 因为两边都是字符串。所以比较的是ASC码
var result = "23" <3 ; //false 因为右边是数值了,他会传化23.
var result = "a" <3 ; //false 因为a被转换成了NaN
结论:只有当左右两边都是字符串的情况下。他才会比较ASCii码,要只是一边是数值,他比较另外一边,把另外一边转成数值.
(二)相等操作符
相等和不相等-先转换再比较
全等和不全等-仅比较而不转换
相等和不相等
- 在JS里面由两个等号(==)表示,表示要是两个操作数相等,则返回true
- 而不相等操作符由叹号(!=)表示,表示两个操作数要是不相等,则返回true
这两个操作符都会先转换操作数(强制转换),然后在比较
在转换不同的数据类型的时候,相等和不等操作符遵循下面的规则:
- 如果一个操作数是布尔值,则比较相等之前先将其转换为数值。--false转为0,而true转为1
- 如果一个操作数是字符串,另一个操作数是数值,则比较相当以前先将字符串变成数值
- 如果一个操作数是对象,另一个操作数不是,则调用valueof()方法,用得到的基本类型按照前面的规则比较
- null和undefined是相等的.
- 要比较相等性之前,不能将null和undefined转换为其他值
- 如果一个操作数要是NaN 则相等操作符返回false,而不相等操作符返回true即使两个数都是NaN,相等操作符也返回false!NaN和任何都不相等,包括它本身,
- 如果两个操作数是对象,比较他们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回true,否则返回false(对象看地址)
举例:
null == undefined true
"NaN" == NaN false
5 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
undefined == 0 false
null == 0 false
"5" == 5 true
一句话概括就是:相等还是不等,在判断前左右两边都必须执行了Number()操作,然后变成了数值之后在操作
全等和不全等
全等由3个等于号(===)表示,它表示两个操作数未经转换就相等的情况下才返回true
例如:
var result = ("55"==55) ; //true
var result2 = ("55"===55); //false
在这个例子中,第一个比较用的是相等操作符比较字符串"55"和数值55;结果返回了true,因为他会先执行转换,而全等他不会执行转换。他会直接判断。所以是false
条件操作符
这里我们又管他叫做3元一次操作符
var result = boolean_expression?true_value:false_value;
这行代码的意思就是问号前面要是真的,他就返回的true_value,要是false就返回false_value
例如:
var max = (num1>num2)?num1:num2;
只有当num1>num2的情况下为真,才返回num1,要是假则返回num2
赋值操作符
简答的操作符由(=)表示,其作用就是把右侧的值赋值给左侧的变量
例如
var num = 10;
如果在等号(=)前面再添加乘性操作符,加性操作符,或位运算符等等,就可以完成复合运算操作.
例如:
var num = 10;
num += 10; 等价于 num = num +10;
每个主要运算符都有对应的操作符:
- 乘性(=) : a=b 等价于a = a*b;
- 除/赋值(/=) : a/=b 等价于a=a/b ;
- 模/赋值(%=) : a%=b 等价于 a =a %b;
- 加/赋值(+=) : a+=b 等于于 a = a + b ;
- 减/赋值(-=) : a-=b 等价于 a = a - b;
- 左移/赋值(<<=)
- 有符号右移/赋值(>>=)
- 无符号右移/赋值(>>>=)
逗号操作符
使用逗号操作符可以在一条语句中,执行多个操作,但是个人不建议
例如:
var num = 1 ,num = 2, num =3;