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简单地调用函数:

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