我认为它应该提醒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());
}
答案 0 :(得分:6)
将for
循环更改为while
循环:
while(arr.length) {
alert(arr.pop());
}
问题是您从数组中删除元素,因此length
会减少,提前结束for
循环。在for
循环的2次迭代后,arr.length
为2,i
也为2,因此循环结束。
以上是working example以上内容。
答案 1 :(得分:1)
你的代码检查每个循环的长度,所以在第二个循环数组长度必须是2(2 poped)但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());
}
答案 2 :(得分:0)
Pop从数组中删除元素,并减少length属性。因此,在两个循环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());
}
答案 3 :(得分:0)
由于pop()操作在循环执行期间数组长度减少。所以经过2次迭代后,i == 2和arr.length == 2