javascript gotcha:空列表到布尔转换

时间:2009-10-07 20:31:09

标签: javascript

为什么两者

 [] == false

![] == false

是真的吗?

3 个答案:

答案 0 :(得分:15)

===运营商是你的朋友。永远不要使用==运算符;正如你所看到的,它会咬你。

答案 1 :(得分:10)

空列表[]必须被视为“假名”,但在![]中!然后转换操作以检查对象引用,其中非null不被视为“假”。

答案 2 :(得分:5)

在将[]与false进行比较之前,它被强制转换为强制转换为数字的字符串,在空数组的情况下为空字符串。空字符串强制为0,这与false以数字方式强制相同。

使用===代替==来避免此问题

这些其他数组也是假的:

  ['']
  [[[]]]
  (function () { var arr = []; arr[0] = arr; })()
  [0]
  ['-0.0']