在嵌套循环JS函数中,'return'是退出循环还是整个函数?

时间:2014-01-14 18:48:51

标签: javascript loops nested-loops

我有一段我无法工作的JavaScript(Euler Project,问题3),我将嵌套循环作为解决方案的一部分。如果满足条件,我想退出子循环,并继续父循环。我应该使用return还是break来实现这个目标?

我在这里阅读了答案:Best way to break from nested loops in Javascript?但我仍然感到困惑,尤其是在包含匿名函数作为解决方案一部分的答案时。

3 个答案:

答案 0 :(得分:5)

return总是退出当前函数。

如果你需要退出一个循环,你应该使用break来终止当前的循环,标签或开关语句。

答案 1 :(得分:1)

break退出循环,return退出函数,但是...在javascript中你可以自由地嵌套它们,所以你可以在循环中的函数循环中有一个函数等在这种情况下,return终止其最近的函数而不是外部函数。例如:

function foo() {
    for(var i = 0; i < 5; i++) {
        var bar = function() {
            // whatever
            return;
        }
        bar();
        // after 'bar' returns, we're here and the loop goes on
    }
}

PS我想知道你为什么需要Euler3的嵌套循环...你能发布你的代码吗?

答案 2 :(得分:1)

要退出循环,请始终使用关键字break,除非您确定循环内部的某些内容使您决定退出整个函数,并且在这种情况下使用return关键字。

你发布的关于匿名函数的链接是巧妙的,该解决方案有3个循环,但是根据条件,程序员想要同时退出2个内循环,但不是最外层,所以他包装了2个内循环在为外循环的每次迭代执行的匿名函数内部,这样当他决定打破2个内部循环时,他可以在不退出最外层的情况下调用return。

问候。