空の配列で実行されたfor-loopを別のfor-loopで空の配列に入れ子にした場合、結果としてブラウザブロックの無限ループが発生するのはなぜですか?空でない配列に空の配列をループすると、無限ループが発生します。なぜですか?
var links = [];
var anchors = ['a', 'b', 'c'];
// not empty loop
for(var i=0; i<anchors.length;i++) {
console.log(anchors[i]);
// empty loop
for(var i=0; i<links.length;i++) {
console.log(links[i]);
}
}
for(var i=0; i<links.length;i++)
のコードは評価されていないので、なぜこの動作ですか?第二のループが実行されると
を評価しないのだろうか? "let"は変数をループスコープにするためですか? – AmintaCode
@AmintaCode 'var'は最も近い関数ブロックにスコープされているので(あなたのコードを関数本体にラップしなかったので、グローバル変数のように動作します)、' let'は最も近い囲みブロックにスコープされます。 –