
运算符 |
语法 |
说明 |
逻辑与,AND(&& ) |
*expr1* && *expr2* |
若 expr**1** 可转换为 true ,则返回 expr**2** ;否则,返回 expr**1** 。 |
逻辑或,OR(` |
|
`) |
逻辑非,NOT(! ) |
!*expr* |
若 expr 可转换为 true ,则返回 false ;否则,返回 true 。 |
如果一个值可以被转换为 true
,那么这个值就是所谓的 truthy,如果可以被转换为 false
,那么这个值就是所谓的 falsy。
会被转换为 false
的表达式有:
null
;
NaN
;
0
;
- 空字符串(
""
or ''
or ````);
undefined
。
尽管 &&
和 ||
运算符能够使用非布尔值的操作数, 但它们依然被看作是布尔操作符,因为它们的返回值总是能够被转换为布尔值。
逻辑与(&&)
a1 = true && true // t && t 返回 true a2 = true && false // t && f 返回 false a3 = false && true // f && t 返回 false a4 = false && (3 == 4) // f && f 返回 false a5 = "Cat" && "Dog" // t && t 返回 "Dog" a6 = false && "Cat" // f && t 返回 false a7 = "Cat" && false // t && f 返回 false a8 = '' && false // f && f 返回 "" a9 = false && '' // f && f 返回 false
|
逻辑或(||)
o1 = true || true // t || t 返回 true o2 = false || true // f || t 返回 true o3 = true || false // t || f 返回 true o4 = false || (3 == 4) // f || f 返回 false o5 = "Cat" || "Dog" // t || t 返回 "Cat" o6 = false || "Cat" // f || t 返回 "Cat" o7 = "Cat" || false // t || f 返回 "Cat" o8 = '' || false // f || f 返回 false o9 = false || '' // f || f 返回 ""
|
逻辑非(!)
n1 = !true // !t 返回 false n2 = !false // !f 返回 true n3 = !'' // !t 返回 false n4 = !'Cat' // !t 返回 false
|
双重非(!!)运算符
n1 = !!true // !!truthy 返回 true n2 = !!{} // !!truthy 返回 true:任何对象都是 truthy 的… n3 = !!(new Boolean(false)) // …甚至 .valueOf()返回false的布尔值对象也是! n4 = !!false // !!falsy 返回 false n5 = !!"" // !!falsy 返回 false n6 = !!Boolean(false) // !!falsy 返回 false
|