continue

continue 语句终止当前或标记循环的当前迭代中语句的执行,并继续执行循环的下一迭代。

试一试

语法

js
continue;
continue label;
label 可选

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

描述

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

continue 语句可以包含一个可选的标签,允许程序跳转到标记循环语句的下一个迭代,而不是最内层循环。在这种情况下,continue 语句需要嵌套在这个标记语句中。

continue 语句(无论是否带有后续标签)都不能在脚本、模块、函数体或 静态初始化块 的顶层使用,即使函数或类进一步包含在循环中。

示例

将 continue 与 while 一起使用

以下示例显示了一个 while 循环,该循环有一个 continue 语句,当 i 的值为 3 时执行。因此,n 取值 1、3、7 和 12。

js
let i = 0;
let n = 0;

while (i < 5) {
  i++;

  if (i === 3) {
    continue;
  }

  n += i;
}

使用带标签的 continue

在以下示例中,标记为 checkIAndJ 的语句包含标记为 checkJ 的语句。如果遇到 continue,则程序将在 checkJ 语句的顶部继续执行。每次遇到 continue 时,checkJ 都会重复,直到其条件返回 false。当返回 false 时,将完成 checkIAndJ 语句的其余部分。

如果 continue 带有 checkIAndJ 标签,则程序将在 checkIAndJ 语句的顶部继续执行。

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

输出

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 语句

continue 不能跨函数边界在循环中使用。

js
for (let i = 0; i < 10; i++) {
  (() => {
    continue; // SyntaxError: Illegal continue statement: no surrounding iteration statement
  })();
}

引用标签时,标记的语句必须包含 continue 语句。

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

标记的语句必须是循环。

js
label: {
  for (let i = 0; i < 10; i++) {
    continue label; // SyntaxError: Illegal continue statement: 'label' does not denote an iteration statement
  }
}

规范

规范
ECMAScript 语言规范
# sec-continue-statement

浏览器兼容性

BCD 表仅在浏览器中加载

另请参阅