我遇到了一个以前从未见过的严重错误。首先我有一个简单的数组:
var myArray = ["123", "456", "789"]
现在我想用 for..in 循环迭代这个数组:
function mapData(list) {
for ( var i in list) {
var item = list[i];
if (item) {
// do something
}
}
}
使用mapData(myArray)调用方法后,firebug在调试器中显示:
- Loop: i = 0; item = 123;
- Loop: i = 1; item = 456;
- Loop: i = 2; item = 789;
- Loop: i = compare;
- Loop: i = union;
- Loop: i = remove;
- Loop: i = select;
- Loop: i = contains;
所以我认为这就是原型(prototype)函数。但为什么?有什么想法吗?
正如我提到的,我以前从未见过这个......
最佳答案
Do not use for..in
to iterate over Array 。这将迭代Array
对象的所有可枚举属性,并且可能不会按顺序迭代它们。有两种选择:
-
Array.forEach
(IE8 不支持,尽管可能有垫片)。 - 一个简单的
for
循环
关于javascript - for..in 数组上的循环也会迭代原型(prototype)函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18659377/