Javascript如果表达式评估

时间:2012-03-19 09:32:48

标签: javascript

我想知道Javascript if表达式何时实际评估为false以及何时评估为true。何时是if语句false是否适用于所有JS解释器

我猜条件是false

  • false
  • undefined
  • null
  • 0

否则true。这对所有实现都是正确的(在Safari / WebKit控制台中测试),还是我最好通过像(typeof a === "undefined")这样的显式检查?

2 个答案:

答案 0 :(得分:10)

以下值将评估为false:

  • 未定义
  • 0
  • 的NaN
  • 空字符串(“”)

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循环停止。)