布尔运算符用于将表达式转为布尔值

  • 取反运算符:!
  • 且运算符:&&
  • 或运算符:||
  • 三元运算符:?:

取反运算符

六个值取反后为true,其他值都为false

  • undefined
  • null
  • false
  • 0
  • NaN
  • 空字符串(’’)

如果对一个值连续做两次取反运算,等于将其转为对应的布尔值,与Boolean函数的作用相同

!!x // 等同于 Boolean(x)

  1. !54 // false
  2. !'hello' // false
  3. ![] // false
  4. !{} // false

且运算符

短路语句

第一个表达式为true才执行第二个表达式

  1. 2 > 1 && console.log('OK') //OK
  2. data && fun(data) //参数存在才执行函数

碰到假就停

如果第一个运算子的布尔值为true,则返回第二个运算子的值(注意是值,不是布尔值);如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值

且运算符可以多个连用,这时返回第一个布尔值为false的表达式的值。如果所有表达式的布尔值都为true,则返回最后一个表达式的值

  1. console.log(
  2. 1 && 2,
  3. 0 && 2,
  4. 'a' && 'b',
  5. 0 && 'abc',
  6. '' && 1 && 0,
  7. 1 && 'a' && 'b'
  8. );
  9. // 2 0 'b' 0 '' 'b'
  10. function test() {
  11. if (1 && 2) {
  12. console.log(true)
  13. } else {
  14. console.log(false)
  15. }
  16. }
  17. test()
  18. //true

或运算符

碰到真就停
如果第一个运算子的布尔值为true,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为false,则返回第二个运算子的值

或运算符可以多个连用,这时返回第一个布尔值为true的表达式的值。如果所有表达式都为false,则返回最后一个表达式的值

  1. console.log(
  2. 1 || 2,
  3. 0 || 2,
  4. 'a' || 'b',
  5. 0 || 'abc',
  6. '' || 1 || 0,
  7. 1 || 'a' || 'b'
  8. 0 || '' || false
  9. );
  10. // 1 2 'a' 'abc' 1 1 false
  1. var a = e || window.Event//ie

三元条件运算符

't' ? 'hello' : 'world' // "hello" 0 ? 'hello' : 'world' // "world"