array = [1,2,3,4]
for num in array
//do something
¿Cuál es el valor de num
en el contexto del resto de la función? ¿num
obtiene el alcance del ciclo?¿Alcance variable en coffeescript para loop?
array = [1,2,3,4]
for num in array
//do something
¿Cuál es el valor de num
en el contexto del resto de la función? ¿num
obtiene el alcance del ciclo?¿Alcance variable en coffeescript para loop?
No, num
no obtiene el alcance al lazo. Como puede ver en el JS compilado (como se señaló en @epidemian), es una variable de ámbito actual, por lo que puede acceder a él también en el resto de la función (por ejemplo, el resto del alcance actual).
Pero tenga cuidado en el caso de la definición de devolución de llamada de la función dentro del bucle:
array = [1, 2, 3]
for num in array
setTimeout (() -> console.log num), 1
salidas
3
3
3
Para capturar variable actual dentro de la devolución de llamada, debe utilizar do
que simplemente se llama a la función:
for num in array
do (num) ->
setTimeout (() -> console.log num), 1
eso es complicado hahah – mateusmaso
He creado algunas condiciones de carrera deliciosas con este error, estar cansado – wmarbut
Acabo de recibir un poco de esto, también. Siento que 'do (num) ->' debería ser el comportamiento predeterminado. – ndbroadbent
¿Qué pasó cuando lo ejecutó? – Mehrdad
Puede probar cosas de CoffeeScript y ver el resultado compilado [aquí] (http://jashkenas.github.com/coffee-script/#try:array%20%3D%20 [1% 2C2% 2C3% 2C4]% 0A % 0A para% 20num% 20in% 20array% 0A% 20% 20console.log% 20% 27inside% 20loop% 27% 2C% 20num% 0A% 0Aconsole.log% 20% 27outside% 20loop% 27% 2C% 20num% 0A) = D – epidemian