Truthy 与 Falsy
Truthy
在 JavaScript 中,Truthy (真值) 指的是在 布尔值 " 布尔值上下文中转换后的值为真的值。所有值都是真值,除非它们被定义为 falsy ( 即除了 false
,0
,""
,null
,undefined
和 NaN
外 )。
JavaScript 在布尔值上下文中使用强制类型转换。
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 上下文中已认定可转换为‘假‘的值.
JavaScript 在需要用到布尔类型值的上下文中使用强制类型转换 Type Conversion 将值转换为布尔值,比如:在条件语句或者循环语句中
例子
JavaScript 中 falsy 值的例子 (通过 if 代码段将 falsy 值转换为 false):
if (false)
if (null)
if (undefined)
if (0)
if (NaN)
if ('')
if ("")
if (document.all)
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)