"&&","||","!"
undefined,null,NaN,"",0,false ==> false
其余表达式转换为布尔值的时候都为真
"&&",从左到右遇到真就跳到下一个表达式,遇到假或到最后一个表达式就返回其值。("||",与其相反)
执行时先看第一表达式转换成布尔值的结果,如果结果为真,那么它会看第二个表达式转换为布尔值的结果,然后如果只有两个表达式的话,只看到第二个表达式,就可以返回该表达式运算完的值了。
var a = 1 && 2;
console.log(a);//2
var a = 1 && 2 && 3;
console.log(a);//3
var a = 1 && 2 + 2;
console.log(a);//4
var a = 1 && 0 && 2;
console.log(a);//0
var a = 1 && false && 2;
console.log(a);//false
&&短路语句运用
2 > 1 && console.log('aa');
如果前面条件表达式成立(2>1),那么就执行后面的表达式。
||运用
& | !
&运算,比较二进制,在等位上,相同为1,不同为0。
例如:
- 1和2 二进制为 01和10,即
01
10
--
00 - 1和3 二进制为 01和11,即
01
11
--
01
var num = 1 & 2;
console.log(num);//0
var num = 1 & 3;
console.log(num);//1
"||"写兼容
div.onclick = function(e){
var event = e || window.event;//IE与非IE。。。
}
"!"转化为布尔值再取反
var a = !123;
console.log(a);//false
"!!"转化为布尔值
var a = !!123;
console.log(a);//true