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

语法

¥Syntax

js
continue;
continue label;
label Optional

与语句标签关联的标识符。

描述

¥Description

break 语句相反,continue 并不完全终止循环的执行,而是:

¥In contrast to the break statement, continue does not terminate the execution of the loop entirely, but instead:

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.

示例

¥Examples

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

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

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

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

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

js
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

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看

¥See also