小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
前言
真理不仁,吾有他想。 -------彼得·席寇
布尔类型只有两个值:真(true) 和 假(false)。布尔值通常由比较运算符生成,被逻辑运算符操作,然后供三目运算符以及if、do、for和while等条件语句使用。
当一个值为 true和false时,typeof返回的结果为“boolean”。
var a = true
var b = false
typeof a === "boolean"
typeof b === "boolean"
关系运算符
以下是几种关系运算符
| 运算符 | 描述 |
|---|---|
| !== | 等于 |
| < | 小于 |
| <= | 小于等于 |
| 大于 | |
| >= | 大于等于 |
你看相等于运算符居然不是等号( = ),而是三等号( === )。你在看,不等运算符也不是不等号( ≠ ),而是感叹号假双等号( !== )。这些运算符在多数情况下有明确的语义,而有时候却令人困惑且毫无意义。比如下面的比较结果。
undefined < null // false
undefined > null // false
undefined === null // false
NaN === NaN // false
NaN !== NaN // true
"11" < "2" // true
"2" < "5" // true
5 < "11" // true
当两个值都为字符串的或者都为数值的时候,<、<=、>和>=的结果都是准确的。不过在其他的情况下,这些比较大多都是无意义的。
平常业务中比较建议尽量不要使用 == 和 !=。这两个比较的时候会做一些强制的类型转换,所以比较结果很可能有无。答应我,务必使用 === 和 !==。
布尔式犯蠢类型
JavaScript 虽然由美妙的布尔类型,但是并没有用好他。下面是一些适用布尔类型值的地方:
- if 语句的判断条件位
- while 语句的条件判断位
- for 语句的条件判断位
- ! 的操作值
- && 两边的操作值
- || 两边的操作值
- 三元运算符(?:)的第一个操作值
- Array 的 filter、find、findIndex和indexOf 方法中传入的函数的返回值
在JavaScript中,所有类型都是“布尔式犯蠢类型”(boolish type)家族的一员。布尔式犯蠢类型的值都可归纳为幻真(truthy)或者幻假(falsy)。
幻假的值有: - false
- null
- undefined
- ""(空字符串)
- 0
- NaN 剩下的值就全部式幻真了,比如空对象、空数组,甚至"false"和"0"这样看起来像幻假的字符串。
这些幻假的值虽然表面上看起来像false,但实际上大多是装出来的。幻真的值也一样。 请记住我们在编码的时候需要严于律己!才能写出更好的程序
逻辑运算符
! 逻辑非
如果运算值为幻真,则运算结果为false,否则为true
&& 逻辑与
如果第一个运算值为幻假,则直接返回第一个运算值;否则返回第二个运算符
|| 逻辑或
如果第一个运算值为幻真,则直接返回第一个运算值;否则返回第二个运算符