continue
continue
语句终止当前或标记循环的当前迭代中的语句的执行,并继续执行下一次迭代的循环。
¥The continue
statement terminates execution of the statements in the current iteration of the current or labeled loop, and continues execution of the loop with the next iteration.
Try it
语法
描述
¥Description
与 break
语句相反,continue
并不完全终止循环的执行,而是:
¥In contrast to the break
statement, continue
does not terminate the execution of the loop entirely, but instead:
- 在
while
或do...while
循环中,它跳回到条件。 - 在
for
循环中,它跳转到更新表达式。 - 在
for...in
、for...of
或for await...of
循环中,它跳转到下一次迭代。
continue
语句可以包含一个可选标签,该标签允许程序跳转到带标签的循环语句的下一个迭代,而不是最内层循环。在这种情况下,continue
语句需要嵌套在该带标签的语句中。
¥The continue
statement can include an optional label that allows the program to jump to the next iteration of a labeled loop statement instead of the innermost loop. In this case, the continue
statement needs to be nested within this labeled statement.
continue
语句,无论带或不带以下标签,都不能在脚本、模块、函数体或 静态初始化块 的顶层使用,即使函数或类进一步包含在循环中也是如此。
¥A continue
statement, with or without a following label, cannot be used at the top level of a script, module, function's body, or static initialization block, even when the function or class is further contained within a loop.
示例
使用 while 继续
¥Using continue with while
以下示例显示了一个 while
循环,其中有一条 continue
语句,该语句在 i
的值为 3 时执行。因此,n
的值为 1、3、7 和 12。
¥The following example shows a while
loop that has a continue
statement that executes when the value of i
is 3. Thus, n
takes on the values 1, 3, 7, and 12.
let i = 0;
let n = 0;
while (i < 5) {
i++;
if (i === 3) {
continue;
}
n += i;
}
使用带有标签的 continue
¥Using continue with a label
在以下示例中,标记为 checkIAndJ
的语句包含标记为 checkJ
的语句。如果遇到 continue
,则程序从 checkJ
语句的顶部继续。每次遇到 continue
时,checkJ
都会重复,直到其条件返回 false。当返回 false 时,checkIAndJ
语句的其余部分完成。
¥In the following example, a statement labeled checkIAndJ
contains a statement labeled checkJ
. If continue
is encountered, the program continues at the top of the checkJ
statement. Each time continue
is encountered, checkJ
reiterates until its condition returns false. When false is returned, the remainder of the checkIAndJ
statement is completed.
如果 continue
的标签为 checkIAndJ
,则程序将从 checkIAndJ
语句的顶部继续执行。
¥If continue
had a label of checkIAndJ
, the program would continue at the top of the checkIAndJ
statement.
let i = 0;
let j = 8;
checkIAndJ: while (i < 4) {
console.log(`i: ${i}`);
i += 1;
checkJ: while (j > 4) {
console.log(`j: ${j}`);
j -= 1;
if (j % 2 === 0) continue checkJ;
console.log(`${j} is odd.`);
}
console.log(`i = ${i}`);
console.log(`j = ${j}`);
}
输出:
¥Output:
i: 0 // start checkj j: 8 7 is odd. j: 7 j: 6 5 is odd. j: 5 // end checkj i = 1 j = 4 i: 1 i = 2 j = 4 i: 2 i = 3 j = 4 i: 3 i = 4 j = 4
无语法的 continue 语句
¥Unsyntactic continue statements
continue
不能在跨函数边界的循环内使用。
¥continue
cannot be used within loops across function boundaries.
for (let i = 0; i < 10; i++) {
(() => {
continue; // SyntaxError: Illegal continue statement: no surrounding iteration statement
})();
}
当引用标签时,带标签的语句必须包含 continue
语句。
¥When referencing a label, the labeled statement must contain the continue
statement.
label: for (let i = 0; i < 10; i++) {
console.log(i);
}
for (let i = 0; i < 10; i++) {
continue label; // SyntaxError: Undefined label 'label'
}
带标签的语句必须是循环。
¥The labeled statement must be a loop.
label: {
for (let i = 0; i < 10; i++) {
continue label; // SyntaxError: Illegal continue statement: 'label' does not denote an iteration statement
}
}
规范
Specification |
---|
ECMAScript Language Specification # sec-continue-statement |
浏览器兼容性
BCD tables only load in the browser