对我来说,这看起来很奇怪:
products = ["Item1", "Item2", "Item3"];
for (var x in products) {
debugger;
console.log(x);
// x === "0" instead of "Item1"
}
我想知道为什么?
答案 0 :(得分:4)
for..in
遍历可枚举属性,并且数组具有充当索引的数字属性。它只与对象一起使用。
使用Arrays也可以为您提供您不感兴趣的属性(例如那些属于Object
对象原型继承的较高链的属性)
因此,请使用简单的for
循环或Array.forEach
products.forEach(function(str){
console.log(str);
});
// or
for(var i = 0; i < products.length; i++)
console.log(products[i]);
答案 1 :(得分:1)
那是因为在你的情况下,变量x
持有数组项的索引,而不是值。不应使用x
,而应使用products[x]
。
products = ["Item1", "Item2", "Item3"];
for (var x in products) {
debugger;
console.log(products[x]);
}
现在,而不是:
0
1
2
你会得到
Item1
Item2
Item3
答案 2 :(得分:-1)
像这样迭代数组。 如果要迭代对象的属性而不是数组,则使用arr中的var!
var products = ["Item1", "Item2", "Item3"];
for (var i =0; i< products.length;i++) {
debugger;
console.log(products[i]);
// x === "0" instead of "Item1"
}