非法继续声明?

Abe*_*ler 20 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
Run Code Online (Sandbox Code Playgroud)

但它会向我的浏览器抛出以下错误:

未捕获的SyntaxError:非法继续语句

是否有可能包括continue我正在尝试而不抛出错误?

T.J*_*der 62

如果你想继续下一个循环迭代,你想要的return不是continue,因为你传递的each是一个函数.

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


rob*_*kuz 10

您没有在代码中使用循环结构,而是使用闭包.你只能通过continue退出循环.当使用下划线每个函数时,您必须通过返回退出闭包/函数

#language construct
for item in items
    if some_condition
        continue

#closure construct
_.each data, (item) ->
    if some_condition
        return
Run Code Online (Sandbox Code Playgroud)