此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
break
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月.
break 语句终止当前循环或switch 语句,并将程序控制权转移到终止语句后的语句。当在带有标签的语句内部使用时,它还可以用于跳过该标记语句。
In this article
尝试一下
let i = 0;while (i < 6) { if (i === 3) { break; } i = i + 1;}console.log(i);// Expected output: 3语法
break;break label;描述
执行到break; 时,程序会跳出最内层的switch 或循环语句,并继续执行其后的下一条语句。
执行到break label; 时,程序会跳出标记为label 的语句,并继续执行其后的下一条语句。break 语句需要嵌套在引用的标签内。标记语句可以是任何语句(通常是块语句),它不一定是另一个循环语句。
即使函数或类进一步嵌套在循环中,break 语句(无论是否带有标签)也不能在脚本、模块、函数体或静态初始化块的顶层使用。
示例
>中断 while 循环
以下函数有一个break 语句,当i 等于 3 时终止while 循环,然后返回值3 * x。
function testBreak(x) { let i = 0; while (i < 6) { if (i === 3) { break; } i += 1; } return i * x;}switch 语句中的 break
以下代码有一个break 语句,当匹配到一个case 并执行完相应的代码后,会终止switch 语句。
const food = "寿司";switch (food) { case "寿司": console.log("寿司原产于日本。"); break; case "披萨": console.log("披萨原产于意大利。"); break; default: console.log("我从未听说过这道菜。"); break;}带标签的 break 语句
以下代码展示了如何使用带标签的break 语句。通过使用break outerBlock 语句,可以跳出标记为outerBlock 的嵌套循环或块语句。
outerBlock: { innerBlock: { console.log("1"); break outerBlock; // 同时跳出 innerBlock 和 outerBlock console.log(":-("); // 跳过这一行 } console.log("2"); // 跳过这一行}非法 break 语句
一个break 语句必须嵌套在它引用的任何标签内部。以下代码也使用了带break 语句的标签,但是会产生语法错误,因为其break 语句引用了block2,但它并未嵌套在block2 内。
block1: { console.log("1"); break block2; // SyntaxError: label not found}block2: { console.log("2");}以下代码示例中,在嵌套在循环或带标签块中的函数内使用break 语句也会产生语法错误,而break 语句旨在跳出这些循环或带标签块。
function testBreak(x) { let i = 0; while (i < 6) { if (i === 3) { (() => { break; })(); } i += 1; } return i * x;}testBreak(1); // SyntaxError: Illegal break statementblock1: { console.log("1"); (() => { break block1; // SyntaxError: Undefined label 'block1' })();}规范
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-break-statement> |