四:关系运算符。
用于比较的关系运算符,当关系运算符操作非数值要遵循以下规则:
2.两个操作数都是字符串,则比较两个字符串对应的字符编码制。
3.两个操作数有一个是数值,则将另一个转换为数值,再进行比较。
4.两个操作数有一个是对象,则先调用valueOf()方法或toString()方法,再用结果比较。
var box = ‘a’>’b’; false a=97,b=98
var box = ‘a’ >’B’; true B=66;
在相等和不相等的比较上,如果操作数非数值,则遵循以下规则:
1.操作数是布尔值,则比较值钱将其转换为数值,false 转换为0,true转换为1;
2.一个操作数是字符串,则比较之前先将其转换为数值再比较
3.一个操作数是对象,则先调用valueOf()或toString()方法后再返回值比较。
4.不需要任何转换的情况下,null和undefined是相等的;
5.一个操作数是NaN,则==返回false,!=返回true,并且NaN和自身不等。
6.两个都是对象,则比较他们是否是同一对象,如果都指向同一个对象,则返回true,否则返回false。
7.在全等和全不等的判断上,比如值和类型都相等,才返回true,否则返回false。
null自动转换为0,但在比较运算上,null和undefined自身都不转换。
var box = null == 0; false
var box = undefined == 0; false;
五:逻辑运算符
包括逻辑与、逻辑或、逻辑非
1.逻辑与:&&
当两边都是true,返回true
如果两边的操作数有一个操作数不是布尔值,与运算不一定返回布尔值
1.第一个操作数是对象,则返回第二个操作数
2.第二个操作数是对象,则第一个操作数返回true,才返回第二个操作数,否则返回false
3.有一个操作是null,则返回null
4.有一个操作数是undefined,则返回undefined。
逻辑与是短路操作,如果第一个是false,则返回false。
2.逻辑或:||
有一个是true,则返回true
如果两边操作数有一个不是布尔值
1.第一个操作数是对象,则返回第一个操作数
2.第一个操作数的求值方式结果为false,则返回第二个操作数。
3.两个操作数都是对象,则返回第一个操作数
4.两个操作数都是null,则返回null
5.两个操作数都是NaN,则返回NaN
6.两个操作数都是undefined,则返回undefined
3.逻辑非
逻辑非运算符可用于任何值,无论这个值是什么类型,这个运算符都会返回一个布尔值。
七.赋值运算
+运算符
var box = 100 + ‘100’; 100100
八:3元运算符
九:运算符优先级