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.
|