Подтвердить что ты не робот

AS3 - для (... in...) vs для каждого (... in...)

Следующий код выполняет то же самое. Есть ли разница между 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);
}
4b9b3361

Ответ 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 перебирает индексы (или ключи) и для каждого в циклах значение.