我想知道Javascript if
表达式何时实际评估为false
以及何时评估为true
。何时是if
语句false
,是否适用于所有JS解释器?
我猜条件是false
false
undefined
null
0
否则true
。这对所有实现都是正确的(在Safari / WebKit控制台中测试),还是我最好通过像(typeof a === "undefined")
这样的显式检查?
答案 0 :(得分:10)
以下值将评估为false:
https://developer.mozilla.org/en/JavaScript/Guide/Statements#if...else_Statement
答案 1 :(得分:1)
如果要检查变量是否存在,并且脚本中的任何位置都没有声明a
,那么可以使用typeof a === 'undefined'
,或 if (!window.a)
}。否则抛出ReferenceError。
你的猜测似乎是正确的。空字符串和NaN也会评估为false
(或者像falsy
一样)。 0评估为false
的事实可能很棘手,但在while (i--)
之类的语句中也很方便(如果i
的值为0则评估为false
并且while循环停止。)