2013-02-12 53 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 

但它引发以下错误,以我的浏览器:

Uncaught SyntaxError: Illegal continue statement

是否有可能包括continue像我想不引发错误?

+0

你究竟想要“继续”? – jAndy 2013-02-12 17:25:38

+0

'continue'是一种JavaScript语言功能。如果没有其封闭词汇范围中的常规循环,它可能不起作用。 – millimoose 2013-02-12 17:26:25

+0

我想继续循环中的下一个项目,而不执行当前项目的“继续”之后的任何代码。 – 2013-02-12 17:26:33

回答

38

如果你想继续下一个循环迭代,你需要return而不是continue,因为你正在传递给each是一个函数。

在您提到的评论中,您熟悉了C#foreach循环,因此想要使用continue。所不同的是,用C#的foreach,你正在处理一个实际的循环结构,而each实际上是为每个循环迭代调用一个函数,所以它不是(在语言级别)循环,所以你不能continue它。

+0

是的,是的,抱歉,我来自C#背景,“继续”显然意味着别的东西。 – 2013-02-12 17:28:43

+1

Ahhhhh,这更有意义。感谢您的解释! – 2013-02-12 17:32:04

+0

谢谢! 为我节省了很多时间来寻找angularJs的“continue”语句替代方法 – ahmednawazbutt 2017-09-13 06:15:25

8

你没有在你的代码中使用循环结构,而是使用闭包。 您只能继续退出循环。当使用下划线函数,你必须通过返回退出关闭/函数

#language construct 
for item in items 
    if some_condition 
     continue 

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