2013-02-12 3 views
8

다음 코드 비슷한 있습니다계속 진술이 잘못 되었습니까?

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

을하지만 내 브라우저에 다음과 같은 오류가 발생합니다 : 나는 오류를 던지고없이 노력하고 같은 continue를 포함

Uncaught SyntaxError: Illegal continue statement

이 가능 ?

+0

실제로 '계속 하시겠습니까?' – jAndy

+0

'continue'는 자바 스크립트 언어 기능입니다. 그것은 아마도 어휘 범위를 둘러싼 일반 루프가 없으면 작동하지 않을 것입니다. – millimoose

+0

현재 항목에 대한 'continue'다음에 코드를 실행하지 않고 루프의 다음 항목으로 이동하려고합니다. –

답변

38

다음 루프 반복을 계속하려면 each으로 전달되는 것이 으로 전달되므로 return이 아니라 continue이 필요합니다.

C# foreach 루프에 익숙하다는 언급에 따라 continue을 사용하고 싶습니다. 차이점은 C#의 foreach인데 실제 루프 구조를 다루는 반면 each은 실제로 루프 반복마다 함수를 호출하므로 루프가 아니기 때문에 (언어 수준에서) continue이 될 수는 없습니다.

+0

그래, 그랬어, 미안해, C#에서 왔는데, 어디서'계속 '이 다른 것을 의미하는지. –

+1

아, 더 의미가 있습니다. 설명 주셔서 감사합니다! –

+0

감사합니다! angularJs에 대한 "continue"문 대안을 검색하는 데 많은 시간을 절약 할 수 있습니다. – ahmednawazbutt

8

코드에서 루프 구조를 사용하지 않고 클로저를 사용합니다. 계속을 사용하여 루프를 종료 할 수 있습니다. 밑줄을 사용할 때 각각 함수를 사용하면 반환을 통해 클로저/함수를 종료해야합니다.

#language construct 
for item in items 
    if some_condition 
     continue 

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