2011-08-21 223 views

回答

69

不,他們不完全相同的事情。

您for..in循環的輸出是

0 
1 
2 

當你對each..in循環輸出

1 
2 
3 

通過for..in循環迭代鍵/索引的數組或屬性名稱的一個對象。 A for each..in循環遍歷。你得到上面的結果,因爲你bar陣列的結構是這樣的:

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

這裏的某些困惑的是,你是你的數組中使用數字。讓我們切換到字符串,看看會發生什麼。

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-在環比值爲