2013-02-12 33 views
8

Tôi có một cái gì đó tương tự như đoạn mã sau:Tuyên bố tiếp tục bất hợp pháp?

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

Nhưng nó ném các lỗi sau đây để trình duyệt của tôi:

Uncaught SyntaxError: Illegal continue statement

Có thể bao gồm một continue như tôi đang cố gắng mà không ném lỗi ?

+0

bạn thực sự muốn 'tiếp tục' là gì? – jAndy

+0

'tiếp tục' là một tính năng ngôn ngữ JavaScript. Nó có thể không hoạt động mà không có một vòng lặp thường xuyên trong phạm vi từ vựng kèm theo của nó. – millimoose

+0

Tôi muốn chuyển đến mục tiếp theo trong vòng lặp của mình mà không cần thực hiện bất kỳ mã nào sau khi 'tiếp tục' cho mục hiện tại. –

Trả lời

38

Nếu bạn muốn tiếp tục với vòng lặp tiếp theo, bạn muốn return, không phải continue, vì những gì bạn đang chuyển đến each là một chức năng.

Trong nhận xét bạn đã đề cập là quen thuộc với vòng lặp C# foreach, do đó muốn sử dụng continue. Điểm khác biệt ở đây là số foreach của C#, bạn đang xử lý một cấu trúc vòng lặp thực tế, trong khi each thực sự gọi một hàm cho mỗi vòng lặp lặp lại, vì vậy nó không phải ở cấp độ ngôn ngữ, vì vậy bạn không thể continue.

+0

Đúng vậy, xin lỗi tôi đến từ một nền C#, nơi 'tiếp tục 'có nghĩa là cái gì đó khác. –

+1

Ahhhhh, điều đó có ý nghĩa hơn. Cảm ơn lời giải thích! –

+0

Cảm ơn bạn! tiết kiệm cho tôi rất nhiều thời gian tìm kiếm một câu lệnh "tiếp tục" thay thế cho angularJs – ahmednawazbutt

8

bạn không sử dụng cấu trúc vòng lặp trong mã của bạn mà là việc đóng. bạn chỉ có thể thoát khỏi vòng lặp với tiếp tục. Khi sử dụng dấu gạch dưới mỗi hàm , bạn phải thoát khỏi đóng/chức năng qua trả lại

#language construct 
for item in items 
    if some_condition 
     continue 

#closure construct 
_.each data, (item) -> 
    if some_condition 
     return 
Các vấn đề liên quan