循环中coffeescript的变量范围?

时间:2012-05-30 06:09:27

标签: coffeescript

array = [1,2,3,4]

for num in array
    //do something

num在函数其余部分的上下文中的值是多少? num是否限定了循环范围?

1 个答案:

答案 0 :(得分: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