continue
continue
语句终止当前或标记循环的当前迭代中语句的执行,并继续执行循环的下一迭代。
试一试
语法
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 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 表仅在浏览器中加载