2011-08-21 12 views
23

Il codice seguente fa esattamente la stessa cosa. C'è una differenza tra for each e for (... in ...)?AS3 - per (... in ...) vs per ciascuno (... 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

Altro come "per (... in ...) vs per ogni (... in ...)" – BoltClock

risposta

69

No, lo fanno non fare la stessa cosa.

L'uscita del ciclo for..in è

0 
1 
2 

Mentre l'uscita del ciclo for each..in è

1 
2 
3 

A itera ciclo for..in attraverso il tasti/indici di un array o nomi di proprietà di un oggetto. A per ogni..in ciclo itera attraverso i valori . È possibile ottenere i risultati di cui sopra, perché la matrice bar è strutturato in questo modo:

bar[0] = 1; 
bar[1] = 2; 
bar[2] = 3; 
9

Alcuni della confusione è che si stanno usando numeri nella propria matrice. Passiamo alle stringhe e vediamo cosa succede.

var bar:Array = new Array("x", "y", "z");  

for (var foo in bar){ 
    trace(foo); 
} 

for each (var foo2 in bar){ 
    trace(foo2); 
} 

Ora l'output è:

0 
1 
2 
x 
y 
z 

Come si può vedere, per-in loop oltre indici (o chiavi), e for-each-in loop oltre valori.