非法继续声明?

时间:2013-02-12 17:24:43

标签: javascript coffeescript

我有类似于以下代码的内容:

_.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而不会抛出错误?

2 个答案:

答案 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