取反运算符
对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为true,其他值都为false。
- undefined
- null
- false
- 0
- NAN
- 空字符串(" ")
两次取反运算后,与Boolean函数结果相同的布尔值。
!!x
// 等同于
Boolean(x)
且运算符(&&)
它的运算规则是:如果第一个运算子的布尔值为true,则返回第二个运算子的值==(注意是值,不是布尔值)==;如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值。
't' && '' // ""
't' && 'f' // "f"
't' && (1 + 2) // 3
'' && 'f' // ""
'' && '' // ""
var x = 1;
(1 - 1) && ( x += 1) // 0
x // 1
或运算符(||)
或运算符(||)也用于多个表达式的求值。它的运算规则是:如果第一个运算子的布尔值为true,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为false,则返回第二个运算子的值。
't' || '' // "t"
't' || 'f' // "t"
'' || 'f' // "f"
'' || '' // ""