目录
布尔操作符
布尔运算符用于将表达式转为布尔值,一共包含四个运算符。
取反运算符:
!
且运算符:
&&
或运算符:
||
三元运算符:
?:
取反运算符 (!)
bool 值
取反运算符是一个感叹号,用于将布尔值变为相反值,即 true 变成 false ,false 变成 true。
!true // false
!false // true
非布尔值
对于非布尔值,取反运算符会将其转为布尔值。可以这样记忆,以下六个值取反后为 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"
'' || '' // ""
- 短路
这种只通过第一个表达式的值,控制是否运行第二个表达式的机制,就称为“短路”(short-cut)
- 为一个变量设置默认值
function saveText(text) {
text = text || '';
// ...
}
// 或者写成
saveText(this.text || '')
三元条件运算符(?:)
三元条件运算符由问号(?
)和冒号(:
)组成,分隔三个表达式。
它是 JavaScript 语言唯一一个需要三个运算子的运算符。如果第一个表达式的布尔值为true,则返回第二个表达式的值,否则返回第三个表达式的值。
't' ? 'hello' : 'world' // "hello"
0 ? 'hello' : 'world' // "world"
通常来说,三元条件表达式与 if...else
语句具有同样表达效果,前者可以表达的,后者也能表达。
但是两者具有一个重大差别,if...else
是语句,没有返回值;
三元条件表达式是表达式,具有返回值。所以,在需要返回值的场合,只能使用三元条件表达式,而不能使用 if..else
。
console.log(true ? 'T' : 'F');
原文地址
本教程采用知识共享 署名-相同方式共享 3.0协议