continue

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

continue 语句终止当前循环或带标签循环的当前迭代中的语句的执行,然后继续执行循环的下一次迭代。

试一试

let text = "";

for (let i = 0; i < 10; i++) {
  if (i === 3) {
    continue;
  }
  text += i;
}

console.log(text);
// Expected output: "012456789"

语法

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 语句的顶部继续执行。每次遇到 continuecheckJ 都会重新迭代,直到其条件返回 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;
    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® 2026 语言规范
# sec-continue-statement

浏览器兼容性

另见