0

人々がforループをネストし、インクリメント変数(i、j、k)を変更する多くの例を見てきました。

for(var i=0;i<array.length;i++){
    for(var j=0;j<array.length;j++){
        for(var k=0;k<array.length;k++){

        }
    }
}

だから私の質問は、なぜforループから関数を呼び出さないのですか?その中にforループがあり、増分変数の衝突を引き起こさないのですか?それはjavascriptの関数スコープの性質によるものなのか、それとも衝突していて問題がなかっただけなのか。例:

for(var i=0;i<array.length;i++){
    callFunction()
}

function callFunction(){
    for(var i=0;i<arry.length;i++){
        console.log(i)
    }
}
4

1 に答える 1

4

なぜadeneoが答えにしなかったのかはわかりませんが、確かにスコープに関係しています。それを比較してください:

function first() {
  var i = 2;
  console.log(i);
}

function second() {
    var i = 3;
    console.log(i);
    first();
}

各関数のi変数は関数内に含まれているため、変数が衝突することはありません。i = 3(の代わりに)グローバル変数を使用していた場合var i = 3、それらは衝突していたでしょう。

JavaScript とスコープ ルールに関する資料が必要な場合は、この質問またはこれらのリンクを確認してください。

于 2013-03-17T05:11:04.583 に答える