Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery惯用的循环早期返回_Javascript_Jquery_Coffeescript_Scope_Return - Fatal编程技术网

Javascript jquery惯用的循环早期返回

Javascript jquery惯用的循环早期返回,javascript,jquery,coffeescript,scope,return,Javascript,Jquery,Coffeescript,Scope,Return,我发现自己曾在多个场合写过这篇文章: { someJQueryCallback: -> keepGoing = true $(someSelector).each -> unless someCondition($(@)) keepGoing = false return false return false unless keepGoing moreStuff() } 当然,第一次,我犯了每个人都犯的新手

我发现自己曾在多个场合写过这篇文章:

{ someJQueryCallback: ->
    keepGoing = true
    $(someSelector).each ->
      unless someCondition($(@))
        keepGoing = false
        return false
    return false unless keepGoing
    moreStuff()
}
当然,第一次,我犯了每个人都犯的新手错误:

{ someJQueryCallback: ->
    $(someSelector).each -> return false unless someCondition($(@))
    moreStuff()
}

啊,函数的漂亮语法的危险。作为新手,我忘记了在这个范围内,
return
将从
each
退出,而不是从
someJQueryCallback
退出。但实际上,即使我现在“开悟了”,这仍然是我想要写的代码。我想以某种方式指定“在从
someJQueryCallback
返回之前弹出堆栈”。初始化、设置并检查
bool
标志很烦人。它增加了粗糙度。有没有一种惯用的方法可以通过这种方式返回调用堆栈的更高层?

我不使用coffeescript,所以这可能并不完美,但希望它能给你一个想法:

{ someJQueryCallback: ->
    try
      $(someSelector).each ->
          throw new Error("STOP!") unless someCondition($(@))
        moreStuff()
    catch error
      return false;
}

可能的重复在本例中,我在任意长度的集合上使用JQuery循环操作,不应该像在可能的重复中那样展开为一系列if语句。这里有一个更好的重复,但我现在更改结束投票指向它为时已晚: