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循环,但它也可以退出整个功能。我该如何解决?
谢谢。
答
中断 - 打破整个循环。 继续 - 跳过一个循环。所以它跳过下面的代码继续;
答
要么使用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
的值,限制函数内引入的变量的范围等)。但值得作为解决方案提供,因为这是一种宝贵的技术,如果不一定在这个特定的场合中使用,那么肯定会用于未来。
答
将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();
}
的可能重复[如何停止一个循环?](http://stackoverflow.com/questions/9830650/how-to-stop-a-for -loop) –
这是你将在基本JavaScript教程的前几章中学到的东西。你可能想考虑像http://eloquentjavascript.net这样的东西来学习语言基础知识。它的[第二章](http://eloquentjavascript.net/chapter2.html)教导了'break'语句。 –