array = [1,2,3,4]
for num in array
//do something
num
在函数其余部分的上下文中的值是多少? num
是否限定了循环范围?
答案 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