下面这些值在JavaScript中都是falsy
:
false
0 (数字零)
"" (空字符串)
null
undefined
NaN (一个特殊的Number值,意为Not-a-Number!)
除上面几个值以外,其他所有值都是truthy
,包括字符串"0", "false", 空函数,空数组,空对象。
假值的比较
Falsy values
遵循一些看起来怪怪的比较规则,这些规则可能会导致程序出现一些逻辑错误。
假值false
,0
,""
三者是相等的,并且它们之间可以相互比较。
var c = (false == 0); // true
var d = (false == ""); // true
var e = (0 == ""); // true
假值null
,undefined
,除了它们自身之外和任何值都不相等。
var f = (null == false); // false
var g = (null == null); // true
var h = (undefined == undefined); // true
var i = (undefined == null); // true
最后,假值 NaN 和任何值都不相等,包括 NaN 本身!
var j = (NaN == null); // false
var k = (NaN == NaN); // false
你应该知道typeof(NaN)
返回"Number"。幸运的是,JavaScript有一个核心函数isNaN()
来判断一个值是否是NaN。