我总是得到意外输出的这段代码出了什么问题?
var foo = [3,4,5];
for ( var i in foo ) {
if ( i == 1 ) {
foo.unshift(6,6);
}
document.write('item: '+foo[i]+"<br>")
}
output:
item: 3
item: 6
item: 3
我能为此找个合适的理由吗?谢谢
最佳答案
我在 IE8
中得到的输出这是
item: 3
item: 6
item: 3
item: 4
item: 5
这是正确的。如果你想在 unshift
之后完全更新值使用另一个循环
var foo = [3,4,5];
for ( var i in foo ) {
if ( i == 1 ) {
foo.unshift(6,6);
}
}
for ( var i in foo )
document.write('item: '+foo[i]+"<br>")
哪个会给出
item: 6
item: 6
item: 3
item: 5
item: 4
在您调用 document.write('item: '+foo[i]+"<br>")
时的代码中与 i = 0
你的foo[0]
是3
对于 i=1
在 unshift
之后foo == [6,6,3,4,5]
即foo[1]
是6
.
关于javascript - 数组迭代陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15963614/