背景
写js 条件判断语句的时候,经常会困惑 到底什么情况下if()括号内会返回真,空字符串、空数组、数字会返回什么。这里MDN已经有专门的的解释,区别与布尔值的true,对于表达式返回真值统称为Truthy.
Truthy(真值)
在 JavaScript 中,truthy(真值)指的是在布尔值上下文中,转换后的值为真的值。
所有值都是真值,除非它们被定义为 假值(即除 false、0、""、null、undefined 和 NaN 以外皆为真值)。
假值
false、0、""、null、undefined 和 NaN
真值(上面几个值以外都为truthy)
只需记住上面几个假值,其他所有情况为真。
特别是空数组[]和空{},都返回真。
举例
if (true)
if ({})
if ([])
if (42)
if ("foo")
if (new Date())
if (-42)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)
注:Infinity 是全局对象(global object)的一个属性,即它是一个全局变量。
Infinity 的初始值是 Number.POSITIVE_INFINITY。Infinity(正无穷大)大于任何值。该值和数学意义上的无穷大很像,例如任何正值乘以 Infinity 为 Infinity, 任何数值(除了Infinity 和 -Infinity)除以 Infinity 为 0。