在下面的代码中,为什么变量'a'指的是索引而不是值?
for (var a in Values) {
alert(Values[a]);
}
答案 0 :(得分:10)
这是设计的。当你知道它的键时,在数组中获取一个值是微不足道的,但是给定一个值的键更难获得。值可以重复,那么您如何知道应该使用哪个键?但是一把钥匙是唯一的,所以只要有一把钥匙,就只能找到一个值。因此,for循环将遍历键,并且获取相关值是微不足道的。
答案 1 :(得分:1)
将JavaScript数组视为普通对象,使用名为length
的特殊属性(实际上,它有点复杂)。因此for..in循环行为与其他对象相同:
var a = new Array();
a[1] = "a";
alert(a.length); // 2
alert(a[0]); // undefined
a[1000] = "b"
alert(a.length); // 1001
a[-1] = "c";
alert(a[-1]); // c
a.abc="why not";
for(var key in a)
{
alert(key+"="+a[key]);
}
// 1=a
// 1000=b
// -1=c
// abc=why not
另请注意,您可以在阵列中留下空白,而无需支付内存价格。
答案 2 :(得分:0)
有一个for each...in循环就是这样 - 只枚举值。即将推出您附近的浏览器。
for each(var a in Values) {
..
}
对于数组,有一个新函数forEach可以达到相同的效果。
someArray.forEach(function(value) {
..
});