2013-02-12 7 views
8

Ich habe etwas ähnliches wie den folgenden Code:Ungültige Continue-Anweisung?

_.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 

Aber es wirft den folgenden Fehler zu meinem Browser:

Uncaught SyntaxError: Illegal continue statement

Ist es möglich, ein continue wie ich ohne werfen die Fehler versuchen schließen ?

+0

was wollen Sie eigentlich 'CONTINUE? – jAndy

+0

'continue' ist eine JavaScript-Sprachfunktion. Es funktioniert wahrscheinlich nicht ohne eine reguläre Schleife in seinem umschließenden lexikalischen Umfang. – millimoose

+0

Ich möchte zum nächsten Element in meiner Schleife gehen, ohne Code nach meinem 'continue' für das aktuelle Element auszuführen. –

Antwort

38

Wenn Sie mit der nächsten Schleifeniteration fortfahren möchten, möchten Sie return, nicht continue, da das, was Sie an each übergeben, eine Funktion ist.

In einem Kommentar erwähnt, dass Sie mit der C# foreach Schleife vertraut sind, also continue verwenden möchten. Der Unterschied ist, dass mit C# 's foreach, Sie mit einem tatsächlichen Loop-Konstrukt beschäftigen, während each ruft eigentlich eine Funktion für jede Schleife Iteration, so ist es nicht (auf einer Sprach-Ebene) eine Schleife, so dass Sie nicht continue es.

+0

Ja, das war es, sorry, ich komme aus einem C# -Hintergrund, wo 'continue' anscheinend etwas anderes bedeutet. –

+1

Ahhhhh, das macht mehr Sinn. Danke für die Erklärung! –

+0

Danke! speichern Sie mich eine Menge Zeit für die Suche nach einer "Fortsetzung" Aussage Alternative für angularJs – ahmednawazbutt

8

Sie verwenden in Ihrem Code kein Schleifenkonstrukt, sondern einen Abschluss. Sie können die Schleife nur mit continue verlassen. Wenn Unterstrichen mit jeder Funktion verlassen Sie die Schließung/Funktion über Rückkehr

#language construct 
for item in items 
    if some_condition 
     continue 

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