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
ループが早期に終了することです。for
ループを2回繰り返した後、arr.length
は2でありi
、これも2であるため、ループは終了します。
上記の実例を次に示します。
コードはループごとに長さをチェックしているため、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 は配列から要素を削除し、長さプロパティを減らします。したがって、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());
}
pop() 操作により、ループ実行中に配列の長さが減少します。したがって、2回の反復の後、 i==2 および arr.length==2