是否存在循环“;重新开始”;
Is there a loop "start-over"?
- 有
continue;
可以停止循环并移动到下一个循环 - 有
break;
停止循环并移动到循环的端
难道没有某种start;
可以停止循环并移动到循环的开始吗?
我知道只需修改i
的值就可以很容易地实现这三个操作,但我总是试图寻找已经构建的it函数。
将循环变量的值重置为初始值,然后调用continue
是最接近的。
例如:
for(var i=0; i<20; i++) {
if(somecondition) {
i=-1; continue;
}
}
否-没有关键字或其他自动方式。
正如您已经提到的,您可以在循环中修改循环条件变量。如果它是一个简单的i
计数器,那就很容易了,但当然,你可能要做的初始化工作比简单的计数器还要多。
或者你可以做一些类似的事情:
restartLoop:
while (true) {
for (var i=0, j=100000, x="test"; i < 1000; i++, j--, x+= ".") {
if (/*some condition, want to restart the loop*/)
continue restartLoop;
}
break;
}
continue restartLoop
将跳回来继续while
循环的下一次迭代,然后立即从头开始for
循环,包括所有初始化代码。如果for
正常退出,之后的break
语句将脱离containingwhile循环。
我真的不建议在一般意义上这样做,但如果你的循环初始化过程真的很复杂,那可能是值得的,因为这样你就不需要在循环中重复了。如果你需要进行比for
语句的初始化表达式更适合的初始化,你可以很容易地将其放在while
中的for
循环之前,它将全部重新运行。。。
如果你想避免跳转或我们许多人都被训练来避免的类似goto语句,你可以为循环使用一个本地函数,并对返回值进行测试,看看你是否应该再次调用它:
function doItAll() {
// put state variables other than the actual loop control here
function doTheLoop() {
for(var i=0; i<20; i++) {
if (somecondition) {
return(true); // run the loop again
}
}
return(false); // done running the loop
}
while (doTheLoop()) {}
// do some things after the loop
}
否。(只是为了排除"我也没听说过"的可能性——在https://developer.mozilla.org/en/JavaScript/Reference/Statements.)
continue
的工作原理是简单地跳过循环体的其余部分。break
的工作原理是跳过循环体的其余部分,然后结束循环。start
函数必须以某种方式将程序的状态"倒带"到循环开始时的位置,但不是程序的所有状态,因为可能你也不想失去你所做的事情,这不是我见过的任何编程语言都能提供的。
您可以在递归调用自身的函数中使用循环:
function loopIt(numTimes) {
if (numTimes < 3) {
for (x = 0; x < 20; x++) {
if (x == 5) {
loopIt(numTimes+1);
break;
}
}
}
}
很明显,您可以更改条件以符合您的逻辑,因为上面的例子很简单。
- 如何在从顶部滚动时暂停转盘/滑块,并在滚动到顶部时重新开始
- 更新画布上的高度/宽度并重新开始绘制
- 如果我重新加载页面,倒计时将重新开始 - 如何设置修复
- 重新开始并承诺取得进展
- JQuery 自动收报机通过减速和停止然后重新开始来播放
- 如何重置 jquery 动画并重新开始
- 失败后重新开始承诺
- 清除答案,重新开始JS计算器
- 每8小时到达00:00:00时刷新页面并重新开始倒计时
- 是否存在循环“;重新开始”;
- jQuery添加类数字到x并重新开始
- For循环jQuery,在4个项目后重新开始
- 如何在用户重新开始后删除动态创建的jQuery对象?在纸上
- 在THREE.js中暂停后重新开始游戏
- 倒计时在凌晨3点,上午9点,下午3点和晚上9点重新开始
- 如何从元素中清除css重新开始
- 重置计数器,重新开始
- plupload:重新开始上传(使用分块)
- 如何修改CSS3滚动框动画无限循环,而不是重新开始
- 如何使从02:00开始的计时器达到00:00,然后在06:00重新开始?