为什么两者
[] == false
和
![] == false
是真的吗?
答案 0 :(得分:15)
===运营商是你的朋友。永远不要使用==运算符;正如你所看到的,它会咬你。
答案 1 :(得分:10)
空列表[]
必须被视为“假名”,但在![]
中!然后转换操作以检查对象引用,其中非null不被视为“假”。
答案 2 :(得分:5)
在将[]与false进行比较之前,它被强制转换为强制转换为数字的字符串,在空数组的情况下为空字符串。空字符串强制为0,这与false以数字方式强制相同。
使用===代替==来避免此问题
这些其他数组也是假的:
['']
[[[]]]
(function () { var arr = []; arr[0] = arr; })()
[0]
['-0.0']