我认为它应该发出 4 次警报,但为什么它只发出 2 次警报。有没有人可以为我解释一下?
var arr = new Array;
arr.push("1");
arr.push("2");
arr.push("3");
arr.push("4");
for(var i=0;i<arr.length;i++){
alert(arr.pop());
}
我认为它应该发出 4 次警报,但为什么它只发出 2 次警报。有没有人可以为我解释一下?
var arr = new Array;
arr.push("1");
arr.push("2");
arr.push("3");
arr.push("4");
for(var i=0;i<arr.length;i++){
alert(arr.pop());
}
将循环更改for
为while
循环:
while(arr.length) {
alert(arr.pop());
}
问题是您从数组中删除元素,因此length
减少,for
提前结束循环。在循环的 2 次迭代之后for
,arr.length
是 2,i
也是 2,所以循环结束。
这是上面的一个工作示例。
您的代码正在检查每个循环的长度,因此在第二个循环中,数组长度必须为 2(弹出 2)但 var i 为 2,因此它们将退出循环
尝试使用for
或者你可以使用
var arr = new Array;
arr.push("1");
arr.push("2");
arr.push("3");
arr.push("4");
var length = arr.length;
for(var i=0;i<length;i++){
alert(arr.pop());
}
Pop 从数组中删除元素,并减小长度属性。所以经过两个循环 i = 2 和数组长度 = 2。
var arr = new Array;
arr.push("1");
arr.push("2");
arr.push("3");
arr.push("4");
var len = arr.length;
for(var i=0;i<len;i++){
alert(arr.pop());
}
由于 pop() 操作数组长度在循环执行期间递减。所以经过 2 次迭代, i==2 和 arr.length==2