javascript退出for循环而不返回

时间:2012-05-06 14:52:11

标签: javascript for-loop

我有一个我想要退出的for循环:

function MyFunction() {
  for (var i = 0; i < SomeCondition; i++) {
     if (i === SomeOtherCondition) {
        // Do some work here.
        return false;
     }
  }
  // Execute the following code after breaking out of the for loop above.
  SomeOtherFunction();
}

问题是在执行// Do some work here.语句之后,我想退出for循环,但仍想在整个for循环下面执行代码(// Execute the following code after breaking out of the for loop above.下面的所有内容)。

return false语句确实退出for循环,但它也退出整个函数。我该如何解决这个问题?

5 个答案:

答案 0 :(得分:84)

您正在寻找break statement

答案 1 :(得分:9)

使用中断或继续声明

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(); 
} 

答案 2 :(得分:7)

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

但是,为了完整起见,我觉得我还应该补充说,通过将return条件的内容包装在闭包函数中,可以在保留if()语句时回答问题:

function MyFunction() {

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

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

  SomeOtherFunction();
  SomeOtherFunction2();
}

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

答案 3 :(得分:4)

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

答案 4 :(得分:1)

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

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

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