Boolean(布尔值)、Truthy(真值)和 falsy (假值)

1,090 阅读2分钟

Boolean(布尔值)

布尔值是一种取值仅能为 真 或 假 的数据类型,它赋予了 JavaScript 在逻辑上表达真 或 假 的能力。

JavaScript 中的布尔值示例如下:

***JavaScript if 语句***
if(boolean conditional) {
   //代码
}

if(true) {
  console.log("布尔值判断条件被解释为 真");
} else {
    console.log("布尔值判断条件被解释为 假");
}



***JavaScript for 循环***
for(control variable; boolean conditional; counter) {
  //代码
}

for(var i=0; i<4; i++) {
  console.log("只有当布尔值判断条件为 真 的时候才,这段文字才会被打印");
}

Truthy(真值)

在 JavaScript 中,truthy(真值)指的是在布尔值上下文中,发生类型转换,转换后的值为真的值。所有值都是真值,除非它们被定义为 假值(即除 false、0、""、null、undefined 和 NaN 以外皆为真值)。

注:JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,例如条件语句和循环语句。

JavaScript 中的真值示例如下(将被转换为 true,if 后的代码段将被执行):

if (true)
if ({})
if ([])
if (42)
if ("foo")
if (new Date())
if (-42)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

falsy(假值)

falsy 值 (假值或虚值) 是在 Boolean 上下文中认定为 false 的值。

在 JavaScript 中只有 7 个 falsy 值。
这意味着当 JavaScript 期望一个布尔值,并被给与下面值中的一个时,它总是会被当做 false
描述
false false 关键字
0 数值 zero
0n 当 BigInt 作为布尔值使用时, 遵从其作为数值的规则. 0n 是 falsy 值.
"", '', `` 这是一个空字符串 (字符串的长度为零). JavaScript 中的字符串可用双引号 "", 单引号 '', 或 模板字面量 `` 定义。
null null - 缺少值
undefined undefined - 原始值
NaN NaN - 非数值

JavaScript 中 falsy 值的例子 (在布尔值上下文中被转换为 false,从而绕过了 if 代码块):

if (false)
if (null)
if (undefined)
if (0)
if (0n)
if (NaN)
if ('')
if ("")
if (``)
if (document.all)

逻辑与操作符 &&

如果第一个值(对象)是 falsy 值,则返回这个值(对象):

let pet = false && "play";  // false