--- title: Falsy slug: Glossary/Falsy tags: - JavaScript - falsy - truthy translation_of: Glossary/Falsy ---
falsy 值 (虚值) 是在 {{Glossary("Boolean")}} 上下文中认定为 false 的值。
{{Glossary("JavaScript")}} 在需要用到布尔类型值的上下文中使用强制类型转换({{Glossary("Type_Conversion", "Type Conversion")}} )将值转换为布尔值,例如条件语句和循环语句。
在 JavaScript 中只有 8 个 falsy 值。
这意味着当 JavaScript 期望一个布尔值,并被给与下面值中的一个时,它总是会被当做 false。
false |
false 关键字 | |
0 | 数值 zero | |
-0 | 数值 负 zero | |
0n | 当 BigInt 作为布尔值使用时, 遵从其作为数值的规则. 0n 是 falsy 值. |
|
"", '', `` |
这是一个空字符串 (字符串的长度为零). JavaScript 中的字符串可用双引号 |
|
{{Glossary("null")}} | null - 缺少值 | |
{{Glossary("undefined")}} | undefined - 原始值 | |
{{Glossary("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 && "dog";
// ↪ false
document.all
在过去被用于浏览器检测,是 HTML 规范在此定义了故意与 ECMAScript 标准相违背的(译者注:document.all
虽然是一个对象,但其转换为 boolean 类型是 false),以保持与历史代码的兼容性 (if (document.all) { // Internet Explorer code here }
或使用 document.all
而不先检查它的存在: document.all.foo
).
falsy 有时会写作 falsey,虽然在英语中,将一个单词转换成形容词时,通常会去掉末尾的字母 e,加上后缀 y。(noise => noisy, ice => icy, shine => shiny)