为什么for-in访问不到空数组的数组元素?
我想给数组赋值,但是为什么for-in访问不到空数组的数组元素?
var arr=new Array(2);
for(var i in arr){
arr[i]=10;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我想给数组赋值,但是为什么for-in访问不到空数组的数组元素?
var arr=new Array(2);
for(var i in arr){
arr[i]=10;
}
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(6)
http://es6.ruanyifeng.com/#do...
for in 只能遍历可枚举的属性且存在的值,undefined相当于没有值。
因为
for in
遍历的是对象的key,空的数组是没有key的写的有毛病....
for...in 循环只遍历可枚举属性
for-in 语句 可以遍历对象 自身的可枚举属性 和其 原型链上的可枚举属性。
这里得了解对象的属性描述符。。。
通过 Array(num) 生成的数组项(稀疏数组项),没有初始化生成属性描述符,就自然无法遍历。
数组的空位指,数组的某一个位置没有任何值。比如,Array构造函数返回的数组都是空位。
上面代码中,Array(3)返回一个具有 3 个空位的数组。
注意,空位不是undefined,一个位置的值等于undefined,依然是有值的。空位是没有任何值,in运算符可以说明这一点。
上面代码说明,第一个数组的 0 号位置是有值的,第二个数组的 0 号位置没有值。
ES5 对空位的处理,已经很不一致了,大多数情况下会忽略空位。
ES6 则是明确将空位转为undefined。