使用js数组作为堆栈

Ale*_*nda 0 javascript

我认为它应该提醒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());
   }
Run Code Online (Sandbox Code Playgroud)

Jam*_*ice 6

for循环更改为while循环:

while(arr.length) {
    alert(arr.pop());   
}
Run Code Online (Sandbox Code Playgroud)

问题是你从数组中删除元素,所以length减少,for提前结束你的循环.在循环的2次迭代之后for,arr.length是2,并且i也是2,因此循环结束.

这是上面的一个工作示例.