alert(0==false); //true; as expected
alert("a"[0]); //a; as expected
alert("a"[false]); //undefined; why?
那为什么呢?
最佳答案
每当您尝试通过括号表示法访问属性时,表达式的值都会转换为字符串。因此,"a"[false]
实际上是"a"['false']
,而"a"[0]
实际上是“a”['0']
。两个属性名称显然非常不同..
在0==false
中,false
被转换为数字,它确实是0
。
换句话说:Number(false)
和 String(false)
产生两个不同的值,因此,即使 0 == false
>, "a"[0] !== "a"[false]
.
关于javascript - 为什么此警报返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23374754/