2011-08-21 12 views
23

次のコードはまったく同じことをします。 for eachfor (... in ...)の間に違いはありますか?AS3 - for(... in ...)対(... 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

「for(... in ...)vs for each(... in ...)」のような他の類似したアイテム – BoltClock

答えて

69

いいえ、彼らはないはまったく同じことをしますか。

each..inループのためのあなたの出力は

1 
2 
3 

にfor..inループを反復処理ですが、あなたにfor..inループの出力は

0 
1 
2 

ですキー/インデックスまたはオブジェクトのプロパティ名。 each..inループのAは、を反復します。

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

ここでは混乱のいくつかは、あなたの配列に番号を使用していることである:あなたのbar配列は、このように構成されているので、あなたは、上記の結果を取得します。文字列に切り替えて何が起こるか見てみましょう。

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-each-でループ値