5
array = [1,2,3,4]

for num in array
    //do something

num関数の残りの部分の文脈における の値は何ですか? numループにスコープされますか?

4

1 に答える 1

17

いいえ、numループには適用されません。コンパイルされたJSでわかるように(@epidemianが指摘したように)、それは現在のスコープ変数であるため、関数の残りの部分(現在のスコープの残りなど)でもアクセスできます。

ただし、ループ内で関数コールバックを定義する場合は注意してください。

array = [1, 2, 3]

for num in array
  setTimeout (() -> console.log num), 1

出力

3
3
3

コールバック内で現在の変数を取得するにはdo、単純に関数を呼び出す whichを使用する必要があります。

for num in array
    do (num) ->
        setTimeout (() -> console.log num), 1
于 2012-05-30T08:06:57.740 に答える