1

リストから他の関数​​を介していくつかのデータを渡す単純なループがありますが、それらの関数が戻ると、カウンターが不思議なことにインクリメントされています:

        for (i = 0; i < list.length; i++) {
            alert(i) // ONE
            doWhatever(list[i]);
            alert(i) // TWO
        }          

doWhatever()次のようになります。

function doWhatever (obj) {
      for (i in obj) createThing(obj[i]);
}

i元のループの の値がこのように変化するのはどうしてですか?

4

1 に答える 1

4

varキーワードを忘れているようです。

コードを見てください。そして、あなたが持っているすべての場所

for (i = 0; ...

に変更します

for (var i = 0; ...

var キーワードなしで記述されたすべてのループは同じi変数を変更するためです (より正確には、そのように記述されたループiは、それを定義した囲んでいるスコープの を変更します。これは、特に適切に定義されていない場合、グローバルなものであることがよくありますi)。

于 2013-10-15T16:59:30.530 に答える