布尔运算符用于将表达式转为布尔值
- 取反运算符:!
- 且运算符:&&
- 或运算符:||
- 三元运算符:?:
取反运算符
六个值取反后为true,其他值都为false
- undefined
- null
- false
- 0
- NaN
- 空字符串(’’)
如果对一个值连续做两次取反运算,等于将其转为对应的布尔值,与Boolean函数的作用相同
!!x // 等同于 Boolean(x)
!54 // false!'hello' // false![] // false!{} // false
且运算符
短路语句
第一个表达式为true才执行第二个表达式
2 > 1 && console.log('OK') //OKdata && fun(data) //参数存在才执行函数
碰到假就停
如果第一个运算子的布尔值为true,则返回第二个运算子的值(注意是值,不是布尔值);如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值
且运算符可以多个连用,这时返回第一个布尔值为false的表达式的值。如果所有表达式的布尔值都为true,则返回最后一个表达式的值
console.log(1 && 2,0 && 2,'a' && 'b',0 && 'abc','' && 1 && 0,1 && 'a' && 'b');// 2 0 'b' 0 '' 'b'function test() {if (1 && 2) {console.log(true)} else {console.log(false)}}test()//true
或运算符
碰到真就停
如果第一个运算子的布尔值为true,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为false,则返回第二个运算子的值
或运算符可以多个连用,这时返回第一个布尔值为true的表达式的值。如果所有表达式都为false,则返回最后一个表达式的值
console.log(1 || 2,0 || 2,'a' || 'b',0 || 'abc','' || 1 || 0,1 || 'a' || 'b'0 || '' || false);// 1 2 'a' 'abc' 1 1 false
var a = e || window.Event//ie
三元条件运算符
't' ? 'hello' : 'world' // "hello" 0 ? 'hello' : 'world' // "world"
