即javascript for in loop vs chrome for in循环

时间:2015-01-30 17:25:07

标签: javascript

var arr=["test"]; for(var e in arr) console.log(e);

在IE11的控制台中输出:

0包含删除clear add addAll(所有属性)

并且在chrome的控制台中只输出0,这是预期的。

如何在IE中修复它?我知道我可以使用for(var i=0;i<arr.length;i++)来解决它。 但我只是想知道为什么IE会输出所有属性。

enter image description here

enter image description here enter image description here

2 个答案:

答案 0 :(得分:2)

使用IE11,对我来说没问题

enter image description here

如果你想要更多的控件使用Array.prototype.forEach方法。它接受一个有三个参数的回调。它们是元素,它们的索引和数组本身。试试

var arr=["test",'ball'];arr.forEach(function(element,index){
   console.log(index);
});

答案 1 :(得分:1)

使用hasOwnProperty方法。

示例:

var arr = ["test"];
for (var e in arr) {
    if (arr.hasOwnProperty(e)) {
        console.log(e);
    }
}

有关为何必要的详细解释:https://stackoverflow.com/a/12017703/1387396

有关hasOwnProperty方法的详细信息及其在for .. in循环中的用法:Object.prototype.hasOwnProperty() - JavaScript | MDN