Следующий код выполняет то же самое. Есть ли разница между 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);
}
Ответ 1
Нет, они не делают то же самое.
Выход вашего цикла for..in
0
1
2
Пока вывод вашего для каждого цикла 1.in
1
2
3
Цикл for.in выполняет итерацию через ключи/индексы массива или имена свойств объекта. А для каждого цикла .in повторяется через значения. Вы получаете вышеуказанные результаты, потому что ваш массив bar структурирован следующим образом:
bar[0] = 1;
bar[1] = 2;
bar[2] = 3;
Ответ 2
Некоторая путаница здесь заключается в том, что вы используете числа в своем массиве. Переключитесь на строки и посмотрите, что произойдет.
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 перебирает индексы (или ключи) и для каждого в циклах значение.