0

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

4 に答える 4

6

forループをループに変更しますwhile

while(arr.length) {
    alert(arr.pop());   
}

問題は、配列から要素を削除するため、lengthが減少し、forループが早期に終了することです。forループを2回繰り返した後、arr.lengthは2でありi、これも2であるため、ループは終了します。

上記の実例を次に示します。

于 2012-06-01T11:04:45.450 に答える
1

コードはループごとに長さをチェックしているため、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());
}
于 2012-06-01T11:08:02.697 に答える
0

Pop は配列から要素を削除し、長さプロパティを減らします。したがって、2 つのループの後、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());
   }
于 2012-06-01T11:09:29.797 に答える
0

pop() 操作により、ループ実行中に配列の長さが減少します。したがって、2回の反復の後、 i==2 および arr.length==2

于 2012-06-01T11:09:41.220 に答える