此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
continue
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
continue 声明终止当前循环或标记循环的当前迭代中的语句执行,并在下一次迭代时继续执行循环。
In this article
尝试一下
let text = "";for (let i = 0; i < 10; i++) { if (i === 3) { continue; } text = text + i;}console.log(text);// Expected output: "012456789"语法
continue;continue label;label标识标签关联的语句
描述
与break 语句的区别在于,continue 并不会完全终止循环的执行,而是:
- 在
while或do...while循环中,控制流跳转回条件判断; - 在
for循环中,控制流跳转到更新语句。 - 在
for...in、for...of或for await...of循环中,它会跳转到下一次迭代。
continue 语句可以包含一个可选的标签以控制程序跳转到指定循环的下一次迭代,而非当前循环。这种情况要求continue 语句在被标识的语句内部。
在脚本、模块、函数体或静态初始块的顶层不能使用continue 语句(无论是否带有后续标签),即使该函数或类进一步包含在循环中也不行。
示例
>在 while 语句中使用 continue
下述例子展示了一个在i 为 3 时执行continue 语句的while 循环。因此,n 的值在几次迭代后分别为 1、3、7 和 12。
i = 0;n = 0;while (i < 5) { i++; if (i === 3) { continue; } n += i;}使用带标签的 continue
在下面的例子中,被标记为checkiandj 的语句包含一个被标记为checkj 的语句。当遇到continue 语句时,程序回到checkj 语句的开始继续执行。每次遇到continue 时,再次执行checkj,直到条件判断返回 false。之后完成checkiandj 语句剩下的部分。
但如果continue 的标号被改为checkiandj ,那程序将会从checkiandj 语句的开始继续运行。
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} 是奇数。`); } console.log(`i = ${i}`); console.log(`j = ${j}`);}输出:
i:0// checkj 开始j:87 是奇数。j:7j:65 是奇数。j:5// checkj 结束i = 1j = 4i:1i = 2j = 4i:2i = 3j = 4i:3i = 4j = 4
语法错误的 continue 语句
continue 不能在跨越函数边界的循环中使用。
for (let i = 0; i < 10; i++) { (() => { continue; // SyntaxError: Illegal continue statement: no surrounding iteration statement })();}引用标签时,标签语句必须包含continue 语句。
label: for (let i = 0; i < 10; i++) { console.log(i);}for (let i = 0; i < 10; i++) { continue label; // SyntaxError: Undefined label 'label'}标记的语句必须是一个循环。
label: { for (let i = 0; i < 10; i++) { continue label; // SyntaxError: Illegal continue statement: 'label' does not denote an iteration statement }}规范
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-continue-statement> |