break支持带标签语法,可跳出指定外层循环;需在目标循环前加“标签名:”,标签须符合变量命名规则且不与已有标识符重名。

JavaScript 中的 break 本身不能直接跳转到任意位置,但它支持带标签(label)的 break,可在多重循环中跳出**指定外层循环**,而非仅终止当前最内层循环。
用标签标记外层循环
在想要跳出的目标循环(如 for、while、do...while)前加一个标识符和冒号,这个标识符就是“标签”。标签名需符合变量命名规则,且不能与已有变量/函数重名。
例如:
outerLoop: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
break outerLoop; // 直接跳出 outerLoop 标签所在的 for 循环
}
console.log(i, j);
}
}
// 输出:0 0, 0 1, 0 2, 1 0
break 标签只能跳出带标签的语句块
标签必须紧挨着一个可中断的语句(for、while、do...while、switch),不能单独标记代码块或 if。以下写法是无效的:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
-
myLabel: { ... }→ ❌ 不支持标签化普通块 -
myLabel: if (...) { ... }→ ❌if不接受break -
break innerLoop;但innerLoop标签不在当前嵌套路径上 → ❌ 运行时报错 “SyntaxError: Undefined label”
常见使用场景与注意事项
适合需要提前退出多层嵌套、避免深层条件判断或简化逻辑的情况。注意:
- 标签名区分大小写,
Outer和outer是不同标签 - 不支持跨函数跳转,标签作用域仅限于其声明所在函数内
- 可与
continue配合使用:continue outerLoop表示跳过当前外层循环本轮,进入下一轮 - 过度依赖标签可能降低可读性,简单逻辑建议用函数提前返回替代
对比:不用标签的 break 行为
不带标签的 break 只终止**最近的**一层循环或 switch:
for (let i = 0; i < 2; i++) {
for (let j = 0; j < 2; j++) {
if (j === 1) break; // 只跳出内层 for,外层继续
console.log(i, j); // 输出:0 0, 1 0
}
}

















