Le code suivant fait exactement la même chose. Y a-t-il une différence entre for each
Et 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);
}
Non, ils ne font pas exactement la même chose.
La sortie de votre boucle for..in est
0
1
2
Alors que la sortie de votre boucle for each..in est
1
2
3
Une boucle for..in parcourt les clés/indices d'un tableau ou noms de propriété d'un objet. La boucle A pour each..in parcourt les valeurs. Vous obtenez les résultats ci-dessus car votre tableau bar
est structuré comme suit:
bar[0] = 1;
bar[1] = 2;
bar[2] = 3;
Une partie de la confusion ici est que vous utilisez des nombres dans votre tableau. Passons aux chaînes et voyons ce qui se passe.
var bar:Array = new Array("x", "y", "z");
for (var foo in bar){
trace(foo);
}
for each (var foo2 in bar){
trace(foo2);
}
Maintenant, votre sortie est:
0
1
2
x
y
z
Comme vous pouvez le voir, for-in boucle sur index (ou clés), et for-each-in boucle sur valeurs.