web-dev-qa-db-fra.com

AS3 - pour (... en ...) vs pour chaque (... en ...)

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);
}
24
apscience

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;
72
BoltClock

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.

13
Craig