以下代码完全相同。 for each
和for (... in ...)
之间有区别吗?
var bar:Array = new Array(1,2,3);
for (var foo in bar){
trace(foo);
}
for each (var foo2 in bar){
trace(foo2);
}
答案 0 :(得分:70)
不,他们不做同样的事情。
for..in循环的输出是
0
1
2
虽然for each..in循环的输出是
1
2
3
for..in循环遍历数组的键/索引或对象的属性名称。每个..in循环的A迭代遍历值。您得到了上述结果,因为您的bar
数组的结构如下:
bar[0] = 1;
bar[1] = 2;
bar[2] = 3;
答案 1 :(得分:11)
这里的一些困惑是你在数组中使用数字。让我们切换到字符串,看看会发生什么。
var bar:Array = new Array("x", "y", "z");
for (var foo in bar){
trace(foo);
}
for each (var foo2 in bar){
trace(foo2);
}
现在你的输出是:
0
1
2
x
y
z
如您所见, for-in 循环索引(或键), for-each-in 循环遍历值强>