ajax333221 ajax333221 - 2 months ago 6
Javascript Question

Is there a loop "start-over"?


  • There is
    continue;
    to stop the loop and move to the next loop

  • There is
    break;
    to stop the loop and move to the end of the loop



Isn't there some kind of
start;
that stop the loop and move to the beginning of the loop?

I know it is easy to achieve all of these three actions by just modifying the value of
i
, but I always try to look for already built-it functions.

Answer

No - there is no keyword or other way to do it automatically.

As you already mentioned you can just modify the loop condition variable(s) within your loop. Easy if it's a simple i counter, but of course you may have more initialisation to do than just a simple counter.

Or you can do something like the following:

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

The continue restartLoop will jump back out to continue with the next iteration of the while loop, which then immediately starts the for loop from the beginning including all of the initialisation code. If the for exits normally the break statement after it will break out of the containing while loop.

I don't really recommend doing this in a general sense, but if your loop initialisation process was really complicated it could be worth it because then you wouldn't need to repeat it all inside the loop. If you needed to do even more initialisation than fits nicely in the for statement's initialisation expression you can easily put it just before the for loop inside the while and it will all be re-run...