我注意到JS中的这种行为:
alert (new Array() == false); // true
有人可以解释 - 为什么?我甚至不知道如何谷歌。
修改
你想说的是new array() == []
,
但为什么:
var someVar = [];
alert (someVar == false); // true
我不明白
答案 0 :(得分:7)
因为==
将导致toString()
在新创建的对象上被调用,并且它将返回""
并且通过强制它将等于false
。
始终使用===
。
答案 1 :(得分:1)
上面的问题与在新创建的对象上调用的.ToString()方法有关,该对象返回""这在Javascript中是假的。
答案 2 :(得分:0)
好吧,new Array()
返回[]
,这意味着空数组。空数组的计算结果为false
S,这就是为什么new Array() === false //true
这可以写成
[].toString()==false //true
toString方法连接数组元素并返回字符串,用comman分隔.Howevever,[]
中没有单个元素为空
[].join()
将返回""
,这就是[].toString return ""
[].toString()
可以写成[].join()