Team LiB   Previous Section   Next Section

6.12 continue

The continue statement is similar to the break statement. Instead of exiting a loop, however, continue restarts a loop in a new iteration. The continue statement's syntax is just as simple as the break statement's:

continue; 

In ECMAScript v3 and JavaScript 1.2, the continue statement can also be used with a label:

continue labelname; 

The continue statement, in both its labeled and unlabeled forms, can be used only within the body of a while, do/while, for, or for/in loop. Using it anywhere else causes a syntax error.

When the continue statement is executed, the current iteration of the enclosing loop is terminated and the next iteration begins. This means different things for different types of loops:

  • In a while loop, the specified expression at the beginning of the loop is tested again, and if it's true, the loop body is executed starting from the top.

  • In a do/while loop, execution skips to the bottom of the loop, where the loop condition is tested again before restarting the loop at the top. Note, however, that JavaScript 1.2 contains a bug that causes the continue statement to jump directly to the top of a do/while loop without testing the loop condition. Therefore, if you plan to use a continue statement in a loop, you should avoid the do/while loop. This is not a serious problem, however, because you can always replace a do/while loop with an equivalent while loop.

  • In a for loop, the increment expression is evaluated and the test expression is tested again to determine if another iteration should be done.

  • In a for/in loop, the loop starts over with the next property name being assigned to the specified variable.

Note the difference in behavior of the continue statement in the while and for loops -- a while loop returns directly to its condition, but a for loop first evaluates its increment expression and then returns to its condition. Previously, in the discussion of the for loop, I explained the behavior of the for loop in terms of an equivalent while loop. Because the continue statement behaves differently for these two loops, it is not possible to perfectly simulate a for loop with a while loop.

The following example shows an unlabeled continue statement being used to exit the current iteration of a loop when an error occurs:

for(i = 0; i < data.length; i++) {

    if (data[i] == null)

        continue;  // Can't proceed with undefined data

    total += data[i];

} 

Like the break statement, the continue statement can be used in its labeled form within nested loops, when the loop to be restarted is not the immediately enclosing loop. Also, like the break statement, line breaks are not allowed between the continue statement and its labelname.

    Team LiB   Previous Section   Next Section