为什么此警报返回undefined

时间:2014-04-29 20:35:24

标签: javascript

alert(0==false);   //true; as expected
alert("a"[0]);     //a; as expected
alert("a"[false]); //undefined; why?

为什么?

3 个答案:

答案 0 :(得分:6)

每当您尝试通过括号表示法访问属性时,表达式的值将转换为字符串。因此,"a"[false],实际上是"a"['false'],而"a"[0]实际上是"a"['0']。两个属性名称显然都非常不同。

0==false中,false转换为数字,确实是0


换句话说:Number(false)String(false)生成两个不同的值,因此即使0 == false"a"[0] !== "a"[false]

答案 1 :(得分:3)

字符串"a"只有一个0索引,这是第一个也是唯一一个字符。

0 == falsetrue0为假,但0 === falsefalse,因为它们的类型不同,并且传递false因为索引不会使它成为0的数字,即使它们都评估为假,这就是为什么它是undefined

答案 2 :(得分:0)

JavaScript对象只有0索引。

所以

"a"[0] //'a'
"a"[1] //undefined
"a"[false] //undefined