为什么此警报返回未定义
Why this alert returns undefined
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]
。
字符串"a"
只有一个0
索引,这是第一个也是唯一的字符。
0 == false
是true
,因为0
是falsy,但0 === false
是false
,因为它们不是同一类型,传递false
作为索引不会使其成为数字0
,即使它们都评估为falsy也是如此,这就是为什么它是undefined
JavaScript对象只有一个0索引。
所以
"a"[0] //'a'
"a"[1] //undefined
"a"[false] //undefined
相关文章:
- 这.SOMETHING 总是返回未定义的 - extjs
- React+Meteor:this.ops返回未定义
- 解析-为什么user.getSessionToken()返回未定义的结果
- Javascript函数返回未定义
- JavaScript-获取数据属性的值返回未定义的值
- .val()返回未定义的.text返回随机代码
- 为什么innerHTML返回“未定义”
- "这个“;正在返回未定义的
- 谷歌地图:函数返回未定义的值在console.log中运行良好
- Javascript json返回未定义
- importScripts在web工作程序中返回未定义的
- 访问嵌套 json 对象的属性将返回未定义
- NativeAppEventEmitter返回未定义的
- 我的函数返回“未定义”
- 新手Javascript函数返回未定义的石头剪刀游戏
- Nodejs模块函数返回未定义的,而不是异步的
- .getElementById在.createTextNode中返回未定义
- javascript函数不返回未定义的值
- Typeahead的Javascript类型返回未定义
- Javascript可见元素返回未定义