javascript的Truthy(真值)和Falsy(虚值)
Truthy(真值)
在 JavaScript 中,truthy(真值)指的是在布尔值上下文中,转换后的值为真的值。所有值都是真值,除非它们被定义为 假值(即除 false
、0
、-0
、0n
、""
、null
、undefined
和 NaN
以外皆为真值)。
JavaScript 在布尔值上下文中使用强制类型转换(coercion)。
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 在需要用到布尔类型值的上下文中使用强制类型转换(Type Conversion )将值转换为布尔值,例如条件语句和循环语句。
在 JavaScript 中只有 8 个 falsy 值。
》这意味着当 JavaScript 期望一个布尔值,并被给与下面值中的一个时,它总是会被当做 false。
false |
false 关键字 | |
0 | 数值 zero | |
-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)