关于javascript for循环的问题?

时间:2010-09-02 02:14:03

标签: javascript for-loop

在下面的代码中,为什么变量'a'指的是索引而不是值?

 for  (var a in  Values) {

     alert(Values[a]);
 }

3 个答案:

答案 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) {
    ..
});