术语系列—Truthy & falsy

190 阅读1分钟

JavaScript在需要用到布尔类型值的上下文时并不只判断true/false,代码中通常会判断0、空字符串等情况,例如

let a = '';
if (a) {
    console.log('判断为 true')
} else {
    console.log('判断为 false')
}


// 输出结果
判断为 true

这就不得不提到truthy、falsy了。从单词含义也可看出:

  • truthy(真值)指的是在布尔值上下文中,转换后的值为真的值。
  • falsy(虚值)是在布尔值上下文中,,转换后的值为假的值。

JavaScript中只有8个falsy值,除假值之外的皆为真值

falsefalse关键字
0数值zero
-0数值负zero
0n当 BigInt 作为布尔值使用时, 遵从其作为数值的规则. 0n 是 falsy 值.
"", '', ``空字符串 (字符串的长度为零). JavaScript 中的字符串可用双引号  "" , 单引号 '', 或 模板字面量  ``  定义。
nullnull - 缺少值
undefinedundefined - 原始值
NaNNaN - 非数值