array = [1,2,3,4]
for num in array
//do something
Qual è il valore di num
nel contesto del resto della funzione? num
ha ambito il ciclo?Ambito variabile in coffeescript per loop?
array = [1,2,3,4]
for num in array
//do something
Qual è il valore di num
nel contesto del resto della funzione? num
ha ambito il ciclo?Ambito variabile in coffeescript per loop?
No, num
non viene limitato l'ambito del ciclo. Come puoi vedere in JS compilato (come sottolineato da @epidemian) è la variabile di oscillazione corrente, quindi puoi accedervi anche nel resto della funzione (ad esempio il resto dello scope corrente).
Ma attenzione in caso di definizione di funzione di callback all'interno del ciclo:
array = [1, 2, 3]
for num in array
setTimeout (() -> console.log num), 1
uscite
3
3
3
Per catturare variabile corrente all'interno della richiamata, è necessario utilizzare do
che chiama semplicemente la funzione:
for num in array
do (num) ->
setTimeout (() -> console.log num), 1
questo è un ingannevole hahah – mateusmaso
ho creato alcune condizioni di gara deliziose con questo errore, essere stanco – wmarbut
po Appena ricevuto da questo, anche. Mi sembra che 'do (num) ->' dovrebbe essere il comportamento predefinito. – ndbroadbent
Cosa è successo quando lo hai eseguito? – Mehrdad
Puoi provare i contenuti di CoffeeScript e vedere il risultato compilato [qui] (http://jashkenas.github.com/coffee-script/#try:array%20%3D%20 [1% 2C2% 2C3% 2C4]% 0A % 0Aper% 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