continue
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 不会完全终止循环的执行,而是会:
- 在
while或do...while循环中,它会跳回到条件判断处。 - 在
for循环中,它会跳到更新表达式处。 - 在
for...in、for...of或for await...of循环中,它会跳到下一次迭代。
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;
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 |
浏览器兼容性
加载中…