我有类似于以下代码的内容:
_.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:非法继续声明
是否可以像我一样尝试continue
而不会抛出错误?
答案 0 :(得分:56)
如果你想继续下一个循环迭代,你需要return
,而不是continue
,因为你传递给each
的是一个函数。
在评论中,您提到熟悉C#foreach
循环,因此想要使用continue
。不同之处在于,使用C#的foreach
,你正在处理一个实际的循环结构,而each
实际上是为每个循环迭代调用一个函数,所以它不是(在语言级别)一个循环,所以你不能continue
它。
答案 1 :(得分:10)
您没有在代码中使用循环结构,而是使用闭包。 你只能通过continue退出循环。每个使用下划线时 函数你必须通过return
退出闭包/函数#language construct
for item in items
if some_condition
continue
#closure construct
_.each data, (item) ->
if some_condition
return