MDN上这样说:
A falsy (sometimes written falsey) value is a value that is considered false when encountered in a Boolean context.
—— falsy (虚值) 是在 Boolean 上下文中认定为 false 的值。
JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换将值转换为布尔值,例如条件语句和循环语句。
在 JavaScript 中只有 8 个 falsy 值。这 8 个值会被强制类型转换为 false。
false | false 关键字 | |
0 | 数值 zero | |
-0 | 数值 负 zero | |
0n | 当 BigInt 作为布尔值使用时, 遵从其作为数值的规则. 0n 是 falsy 值. | |
"", '', `` | 空字符串(empty string). JavaScript 中的字符串可用双引号 | |
null | 缺少值 | |
undefined | 原始值 | |
NaN | Not-A-Number |
MDN上这样说:
In JavaScript, a truthy value is a value that is considered
true
when encountered in a Boolean context.—— 在 JavaScript 中,truthy(真值)指的是在 Boolean 上下文中,转换后的值为真的值。
除了 falsy 的值(上文已列出),都是 truthy。
1. falsy :在需要用到 Boolean 类型的时候,表现为 false 的都是 falsy
2. truthy:在需要用到 Boolean 类型的时候,表现为 true 的都是 truthy
3. 除了八种 falsy 值,全部都是 truthy 值
if (false)
if (null)
if (undefined)
if (0)
if (-0)
if (0n)
if (NaN)
if ('')
if ("")
if (``)
if (document.all)
知识补充:
document.all
在过去被用于浏览器检测,是 HTML 规范在此定义了故意违背 ECMAScript 的标准,要求浏览器将document.all
视作 falsy。HTML5 标准已将
document.all
废弃。
如果第一个对象是 falsy 值,则返回第一个对象;
如果第一个对象是 truthy 值,则返回第二个对象;
let pet1 = false && "dog";
// ↪ false
let pet2 = true && "dog";
// ↪ "dog"
乘风破浪 ~