Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有一个循环;重新开始;? 有继续停止循环并移动到下一个循环 有中断停止循环并移动到循环的末尾_Javascript_Loops - Fatal编程技术网

Javascript 是否有一个循环;重新开始;? 有继续停止循环并移动到下一个循环 有中断停止循环并移动到循环的末尾

Javascript 是否有一个循环;重新开始;? 有继续停止循环并移动到下一个循环 有中断停止循环并移动到循环的末尾,javascript,loops,Javascript,Loops,难道没有某种开始 我知道只需修改I的值就可以轻松实现所有这三个操作,但我总是尝试查找已经构建的it函数。没有。(只是为了排除“我也没听说过它”-在中没有提到它。)继续只需跳过循环体的其余部分即可中断的工作方式是跳过循环体的其余部分,然后结束循环。start函数必须以某种方式将程序的状态“倒带”到循环开始时的位置,但不是程序的所有状态,因为您可能也不想丢失您所做的事情,这不是我所见过的任何编程语言都能提供的。将循环变量的值重置为初始值,然后调用continue,这是最接近的 例如: for(var

难道没有某种
开始


我知道只需修改
I
的值就可以轻松实现所有这三个操作,但我总是尝试查找已经构建的it函数。

没有。(只是为了排除“我也没听说过它”-在中没有提到它。)

继续
只需跳过循环体的其余部分即可<代码>中断
的工作方式是跳过循环体的其余部分,然后结束循环。
start
函数必须以某种方式将程序的状态“倒带”到循环开始时的位置,但不是程序的所有状态,因为您可能也不想丢失您所做的事情,这不是我所见过的任何编程语言都能提供的。

将循环变量的值重置为初始值,然后调用
continue
,这是最接近的

例如:

for(var i=0; i<20; i++) {
  if(somecondition) {
    i=-1; continue;
  }
}

for(var i=0;iNo-没有关键字或其他方法可以自动执行

正如您已经提到的,您可以只修改循环中的循环条件变量。如果它是一个简单的
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;
}
restartLoop:
while(true){
对于(变量i=0,j=100000,x=“测试”;i<1000;i++,j--,x++”){
如果(/*某些条件,要重新启动循环*/)
继续重新启动循环;
}
打破
}
continue restartLoop
将跳出,继续执行
while
循环的下一次迭代,然后立即从一开始就启动
for
循环,包括所有初始化代码。如果
for
正常退出
break
语句,它将中断c在循环时包含


我并不建议在一般意义上这样做,但是如果循环初始化过程非常复杂,那么它可能是值得的,因为这样你就不需要在循环中重复所有的过程。如果你需要做更多的初始化,而不是非常适合
for
语句的初始化表达式,你可以轻松地t它就在
中的
for
循环之前,而
将重新运行…

您可以在递归调用自身的函数中使用该循环:

function loopIt(numTimes) {
            if (numTimes < 3) {
                for (x = 0; x < 20; x++) {
                    if (x == 5) {
                        loopIt(numTimes+1);
                        break;
                    }
                }
            }     
        }
函数loopIt(numTimes){
如果(numTimes<3){
对于(x=0;x<20;x++){
如果(x==5){
loopIt(numTimes+1);
打破
}
}
}     
}

显然,您可以更改条件以适应您的逻辑,因为上面是一个简单的示例。

如果您想避免跳转或我们许多人都经过训练要避免的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
}
函数doItAll(){
//将实际循环控制以外的状态变量放在此处
函数doTheLoop(){

对于(var i=0;我怀疑数据会丢失,如果从0开始循环,并且在一些循环分配了-1的值之后,它会再次开始循环。我经常使用这个。是的-但是要自动执行此操作,语言需要知道循环变量是哪一个。我相信
i=-1
更合适(我可能错了),这取决于
是否继续
阻止
i++
(我不知道)@ajax333221是正确的。
continue
在重新评估条件之前肯定会跳转到更新表达式。不需要测试,这么明确地说……我可以问一下为什么我们不将
I=0
?@jason,因为
I++
会再次将其返回。
-1
意味着
I++
会将您重置为
0
按预期。是的,
continue
break
都可以与一起使用,这样您就可以
continue
break
从内部循环(通过所需的多个嵌套级别)创建外部循环.当然,在我的回答中,我有点滥用了这一点,因为我的外循环除了允许重新启动内循环外,没有任何其他用途,但无论如何,正如我相信您可以想象的那样,还有更严重的应用程序。是否可以标记循环的开始,并使用break跳转到它?(果真如此,我想我找到了一个有趣的方法来实现我的目标)不,
break-somelabel
将退出
somelabel
应用的循环,并在循环后继续执行该语句。这就是为什么我在回答中使用
continue
和包含循环的原因。您要查找的是,JavaScript没有-谢天谢地。()+1.让我们了解这个深奥的JS特性。()我以前使用过意大利面代码。我尽可能避免使用现代语言。实际上,我认为返回技巧是最好的解决方案。重置
I
也不太好。这是一个很好的解决方案。但是,您可以通过将while和for放在同一个函数中来美化和增强它。您可以通过休息来重新启动循环和for循环一样,您可以将索引重置为0,它将重新启动