2011-08-21 12 views
23

El siguiente código hace exactamente lo mismo. ¿Hay una diferencia entre for each y for (... in ...)?AS3 - para (... en ...) vs para cada (... en ...)

var bar:Array = new Array(1,2,3);  

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

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

Más como "para (... en ...) vs para cada (... en ...)" – BoltClock

Respuesta

69

No, ellos no hacen exactamente lo mismo.

la salida de su bucle for..in es

0 
1 
2 

Mientras que la salida de su bucle for each..in es

1 
2 
3 

A bucle for..in a través de la claves/índices de una matriz o nombres de propiedad de un objeto. Un ciclo para cada..in itera a través de los valores . A obtener los resultados anteriores porque la matriz bar se estructura de la siguiente manera:

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

Parte de la confusión aquí es que está utilizando números de la matriz. Pasemos a las cadenas y veamos qué pasa.

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

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

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

Ahora su salida es:

0 
1 
2 
x 
y 
z 

Como se puede ver, for-in bucles más índices (o claves), y para-cada-en bucles más valores.