我认为它应该提醒4次,但它为什么只提醒2次。有没有人可以为我做出解释?使用js数组作为堆栈
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次。有没有人可以为我做出解释?使用js数组作为堆栈
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
循环。经过for
循环的2次迭代后,arr.length
为2,并且i
也为2,因此循环结束。
这里是上述的working example。
您的代码检查长度的每一个回路所以在第二循环数组的长度必须是2(2弹出),但无功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());
}
由于弹出()操作阵列长度递减循环执行期间。所以在2次迭代后,i == 2和arr.length == 2
非常好!我真的是编程的新手 –
或另一种可能性正在做'for(var i = 0,l = arr.length; i
fcalderan
非常感谢。 –