← 返回首页
break - JavaScript | MDN

此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

break

基线 广泛可用

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

break 语句终止当前循环或 switch 语句,并将程序控制权转移到终止语句后的语句。当在带有标签的语句内部使用时,它还可以用于跳过该标记语句

本文内容

尝试一下

let i = 0; while (i < 6) { if (i === 3) { break; } i = i + 1; } console.log(i); // Expected output: 3

语法

js
break; break label;
label 可选

与要中断的语句的标签关联的标识符。如果 break 语句未嵌套在循环或 switch 中,则需要标签标识符。

描述

执行到 break; 时,程序会跳出最内层的 switch 或循环语句,并继续执行其后的下一条语句。

执行到 break label; 时,程序会跳出标记为 label 的语句,并继续执行其后的下一条语句。break 语句需要嵌套在引用的标签内。标记语句可以是任何语句(通常是语句),它不一定是另一个循环语句。

即使函数或类进一步嵌套在循环中,break 语句(无论是否带有标签)也不能在脚本、模块、函数体或静态初始化块的顶层使用。

示例

中断 while 循环

以下函数有一个 break 语句,当 i 等于 3 时终止 while 循环,然后返回值 3 * x。

js
function testBreak(x) { let i = 0; while (i < 6) { if (i === 3) { break; } i += 1; } return i * x; }

switch 语句中的 break

以下代码有一个 break 语句,当匹配到一个 case 并执行完相应的代码后,会终止 switch 语句。

js
const food = "寿司"; switch (food) { case "寿司": console.log("寿司原产于日本。"); break; case "披萨": console.log("披萨原产于意大利。"); break; default: console.log("我从未听说过这道菜。"); break; }

带标签的 break 语句

以下代码展示了如何使用带标签的 break 语句。通过使用 break outerBlock 语句,可以跳出标记为 outerBlock 的嵌套循环或块语句。

js
outerBlock: { innerBlock: { console.log("1"); break outerBlock; // 同时跳出 innerBlock 和 outerBlock console.log(":-("); // 跳过这一行 } console.log("2"); // 跳过这一行 }

非法 break 语句

一个 break 语句必须嵌套在它引用的任何标签内部。以下代码也使用了带 break 语句的标签,但是会产生语法错误,因为其 break 语句引用了 block2,但它并未嵌套在 block2 内。

js
block1: { console.log("1"); break block2; // SyntaxError: label not found } block2: { console.log("2"); }

以下代码示例中,在嵌套在循环或带标签块中的函数内使用 break 语句也会产生语法错误,而 break 语句旨在跳出这些循环或带标签块。

js
function testBreak(x) { let i = 0; while (i < 6) { if (i === 3) { (() => { break; })(); } i += 1; } return i * x; } testBreak(1); // SyntaxError: Illegal break statement
js
block1: { console.log("1"); (() => { break block1; // SyntaxError: Undefined label 'block1' })(); }

规范

规范
ECMAScript® 2027 Language Specification
# sec-break-statement

浏览器兼容性

启用 JavaScript 以查看此浏览器兼容性表。

参见