title | slug | l10n | ||
---|---|---|---|---|
假值 |
Glossary/Falsy |
|
{{GlossarySidebar}}
假值(falsy,有时写为 falsey)是在{{Glossary("Boolean", "布尔")}}上下文中认定为 false 的值。
{{Glossary("JavaScript")}} 在需要用到布尔类型值的上下文中使用{{Glossary("Type_Conversion", "类型转换")}}将值转换为布尔值,例如{{Glossary("Conditional", "条件语句")}}和{{Glossary("Loop", "循环语句")}}。
下列表格提供了 JavaScript 的所有假值。
值 | 类型 | 描述 |
---|---|---|
{{Glossary("null")}} | Null | 关键词 null — 任何值的缺失 |
{{Glossary("undefined")}} | Undefined | undefined — 原始类型值 |
false |
Boolean | 关键字 false 。 |
{{Glossary("NaN")}} | Number | NaN — 不是一个数字 |
0 |
Number | {{jsxref("Number")}} 零,也包括 0.0 、0x0 等。 |
-0 |
Number | {{jsxref("Number")}} 负的零,也包括 -0.0 、-0x0 等。 |
0n |
BigInt | {{jsxref("BigInt")}} 零,也包括 0x0n 等。需要注意没有 {{jsxref("BigInt")}} 负的零 —— 0n 的相反数还是 0n 。 |
"" |
String | 空字符串值,也包括 '' 和 `` 。 |
{{domxref("document.all")}} | Object | 唯一具有假值的 JavaScript 对象是内置的 {{domxref("document.all")}}。 |
null
和 undefined
也都是空值。
JavaScript 中假值的例子(在布尔值上下文中被转换为 false,从而绕过了 if
代码块):
if (false) {
// 执行不到这里
}
if (null) {
// 执行不到这里
}
if (undefined) {
// 执行不到这里
}
if (0) {
// 执行不到这里
}
if (-0) {
// 执行不到这里
}
if (0n) {
// 执行不到这里
}
if (NaN) {
// 执行不到这里
}
if ("") {
// 执行不到这里
}
如果第一个对象是假值,则返回那个对象:
console.log(false && "dog");
// ↪ false
console.log(0 && "dog");
// ↪ 0
- {{Glossary("Truthy", "真值")}}
- {{Glossary("Type_coercion", "类型转换")}}
- {{Glossary("Boolean", "布尔值")}}
- 布尔值转换