第六章 布尔类型

322 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

前言

真理不仁,吾有他想。 -------彼得·席寇
布尔类型只有两个值:真(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

&& 逻辑与

如果第一个运算值为幻假,则直接返回第一个运算值;否则返回第二个运算符

|| 逻辑或

如果第一个运算值为幻真,则直接返回第一个运算值;否则返回第二个运算符