令人迷惑的js真假值 true?false?


在使用js的时候总是出现令人迷惑的真假值,记住下面的模式以后就可以更清晰的认识它们了。

在JavaScript中,Truthy(真值)指的是在Boolean上下文中转换后的值为真的值。所有值都是真值,除非它们被定义为 falsy (即, 除了false,0,“”,null,undefined和NaN 外)。
JavaScript中的真值示例如下(将被转换为true类型,if 后的代码段将被执行):

if (true)
if ({})
if ([])
if (42)
if ("foo")
if (new Date())
if (-42)
if (3.14)a
if (-3.14)
if (Infinity)
if (-Infinity)


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)

当然这里有个漂亮的javascript 真值表,看起来更加直观

Archives