0
A = [1,2,3,4,5];
for (var i in A) {
if (A[i] == 4) A.splice(i,1), A.push(7);
if (A[i] == 2) A.splice(i,1), A.push(0);
if (A[i] == 7) console.log('seven');
if (A[i] == 0) console.log('zero');
}
console.log(A);
這似乎工作,但我不知道執行for(.. in ..)循環的細節,以確保它在大多數情況下是安全的。修改(..in ..)循環中的數組是否安全?
See also the paired question about an object modification
用'for..in'完成迭代數組不是個好主意。 – Teemu
[ECMA 262 - 'for-in'聲明](http://www.ecma-international.org/ecma-262/5.1/#sec-12.6.4)。在先前的迭代完成之後,一次檢索一個屬性。所以,如果你問是否有可能修改對象,使循環無限延伸,是的,這是可能的。 –
*有可能嗎?*是的。 *安全嗎?*是的。 *這是一種很好的做法嗎?*不,因爲您所指的索引很容易迷路。 –