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)。在先前的迭代完成之后,一次检索一个属性。所以,如果你问是否有可能修改对象,使循环无限延伸,是的,这是可能的。 –
*有可能吗?*是的。 *安全吗?*是的。 *这是一种很好的做法吗?*不,因为您所指的索引很容易迷路。 –