JavaScript退出循环而不返回

问题描述:

我有一个循环,我想退出;像这样:JavaScript退出循环而不返回

function MyFunction() { 

    for (var i = 0; i < SomeCondition; i++) { 

    if (i === SomeOtherCondition) { 

     // Do some work here 
     return false; 
    } 
    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 
} 

的问题是,Do some work here语句执行后,我要退出的循环,但仍执行SomeOtherFunctions();

返回虚假陈述并退出for循环,但它也可以退出整个功能。我该如何解决?

谢谢。

+2

的可能重复[如何停止一个循环?](http://stackoverflow.com/questions/9830650/how-to-stop-a-for -loop) –

+1

这是你将在基本JavaScript教程的前几章中学到的东西。你可能想考虑像http://eloquentjavascript.net这样的东西来学习语言基础知识。它的[第二章](http://eloquentjavascript.net/chapter2.html)教导了'break'语句。 –

您正在查找的break statement

+1

以及一个javascript的链接:http://www.w3schools.com/js/js_break。asp – Sietse

+0

啊okkkk,谢谢你的答案。 – frenchie

+0

为什么你指的是C#示例? – ilanco

中断 - 打破整个循环。 继续 - 跳过一个循环。所以它跳过下面的代码继续;

要么使用break或continue语句

function MyFunction() { 
    for (var i = 0; i < SomeCondition; i++) { 

    if (i === SomeOtherCondition) { 

     // Do some work here 
     break; 
    } 
    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 
} 

还是要继续处理项目,除了那些在

function MyFunction() { 
    for (var i = 0; i < SomeCondition; i++) { 

    if (i != SomeOtherCondition) continue; 

    // Do some work here 
    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 
} 

几个人提供break作为解决方案的条件,这确实是这个问题的最佳答案。

然而,仅仅为了完整性,我觉得我还要补充一点,这个问题可以回答了包装的if()条件的内容在一个闭合功能,同时保留了return声明:

function MyFunction() { 

    for (var i = 0; i < SomeCondition; i++) { 

    if (i === SomeOtherCondition) { 
     function() { 
      // Do some work here 
      return false; 
     }(); 
    } 
    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 
} 

正如我例如,break在这种情况下可能是更好的解决方案,因为它是问题的直接答案,并且闭包确实引入了一些其他因素(例如更改this的值,限制函数内引入的变量的范围等)。但值得作为解决方案提供,因为这是一种宝贵的技术,如果不一定在这个特定的场合中使用,那么肯定会用于未来。

+0

好的,谢谢。我的理念是保持我的代码简单,以便将来更易于维护。如果其他人想要采取这个方向,可以投票赞成。 – frenchie

+0

@frenchie - 你是对的;这绝对是最好的理念。在这种情况下,“break”是正确的答案。闭包非常强大,并且有很多用途(大多数jQuery代码都是建立在它们之上的),但这种情况太过简单,无法使用。 – Spudley

将i变量设置为somecondition值是一个好方法吗?

for (var i=0; i<SomeCondition; i++) { 

    if (data[i]===true) { 
    //do stuff 
    i=SomeCondition; 
    } 
} 

OK,也许这是一个老话题,但看完所有的答案后,我想知道那为什么没有人使用while循环,而不是建议?

我想在JavaScript中你可以打破一个for循环(你不能在许多其他语言中做,或者被认为是一个坏习惯),但是我仍然只对你想循环迭代的情况使用for循环固定的时间量。

这将是我的建议:

function MyFunction() { 

    var i = 0, 
     breakLoop = false; 

    while (i < SomeCondition && !breakLoop) { 

    if (i === SomeOtherCondition) { 
     breakLoop = true; 
    } 

    i++; 

    } 

    SomeOtherFunction(); 
    SomeOtherFunction2(); 

}