我有一个我想要退出的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循环,但它也退出整个函数。我该如何解决这个问题?
答案 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;
}
}