2013-02-12 16 views
8

ho qualcosa simile al seguente codice:Dichiarazione continua illegale?

_.each data, (value, type) -> 
    switch type 
     when "answered" 
      icon = "results_answered" 
      label = definitions.results.metrics.ta 
     when "leftblank" 
      icon = "results_lb" 
      label = definitions.results.metrics.tlb 
     when "standing" 
      icon = "results_standing" 
      label = definitions.results.metrics.cs 
     when "minimum" 
      icon = "results_min" 
      label = definitions.results.metrics.lowest 
     else 
      continue 

    metricLine = utilities.div("metricline") 
    metricLine.grab utilities.sprite(icon, "metric_icon") 
    metricLine.grab utilities.div("metriclabel", label + ":") 
    metricLine.grab utilities.div("metricvalue", value) 
    metricContainer.grab(metricLine) 

metricContainer 

Ma getta il seguente errore al browser:

Uncaught SyntaxError: Illegal continue statement

E 'possibile includere una continue come sto provando senza gettare l'errore ?

+0

cosa ne vuole realmente 'CONTINUE? – jAndy

+0

'continue' è una funzione di linguaggio JavaScript. Probabilmente non funziona senza un ciclo regolare nel suo ambito lessicale che racchiude. – millimoose

+0

Voglio andare al prossimo elemento nel mio ciclo senza eseguire alcun codice dopo il mio 'continue' per l'elemento corrente. –

risposta

38

Se si desidera continuare con l'iterazione del ciclo successivo, si desidera return, non continue, poiché ciò che si sta passando a each è una funzione.

In un commento che hai menzionato essendo familiare con il ciclo C# foreach, quindi volendo utilizzare continue. La differenza è che con il foreach di C#, si ha a che fare con un costrutto di loop effettivo, mentre each in realtà sta chiamando una funzione per ogni iterazione del ciclo, quindi non è (a livello di lingua) un ciclo, quindi non è possibile farlo continue.

+0

Sì, è vero, mi dispiace, provengo da uno sfondo in C#, dove "continuare" significa apparentemente qualcos'altro. –

+1

Ahhhhh, questo ha più senso. Grazie per la spiegazione! –

+0

Grazie! mi risparmia un sacco di tempo alla ricerca di un'alternativa di istruzione "continua" per angularJs – ahmednawazbutt

8

non si sta utilizzando un costrutto di loop nel codice ma una chiusura. puoi uscire da un loop solo con continua. Quando si utilizza sottolineatura ogni funzione dovete uscire dalla chiusura/funzione tramite ritorno

#language construct 
for item in items 
    if some_condition 
     continue 

#closure construct 
_.each data, (item) -> 
    if some_condition 
     return 
Problemi correlati