label语句为循环等语句命名,配合break/continue实现跳出多层嵌套;必须紧贴目标语句前并加冒号,不可用于function/let/const声明前。

JavaScript 中的 label 语句本身不执行任何操作,它的作用是为语句(通常是循环)命名,然后配合 break 或 continue 直接跳转到该标签位置,从而实现跳出多层嵌套循环的效果。
label 的基本语法和位置要求
label 必须紧贴在语句前,后跟冒号,且只能用于声明语句、if、for、while、do...while 等可执行语句——不能单独存在,也不能放在 function、let、const 声明前面。
常见错误写法:
-
let outer = 'test'; outer: for (...) {...}❌(label 不能放在变量声明之后) -
outer: { ... }✅(块语句可以加 label,但仅当内部有 break/continue 引用它时才有意义)
用 label + break 跳出外层 for 循环
这是最典型的使用场景:在内层循环中满足某个条件,需要立即终止整个嵌套结构,而不是只退出当前内层循环。
立即学习“Java免费学习笔记(深入)”;
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
示例:
outerLoop: for (let i = 0; i < 3; i++) {
console.log('外层:', i);
for (let j = 0; j < 3; j++) {
console.log(' 内层:', j);
if (i === 1 && j === 1) {
break outerLoop; // 直接跳出 outerLoop 标签标记的 for
}
}
}
// 输出:
// 外层: 0
// 内层: 0
// 内层: 1
// 内层: 2
// 外层: 1
// 内层: 0
// 内层: 1
label 也可以配合 continue 使用
continue labelName 会跳过当前标签所标识循环的本次迭代,直接进入下一次循环(对 for 是执行更新表达式;对 while 是重新判断条件)。
例如:
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
continue outer; // 跳过外层 i=1 的剩余部分,直接 i++
}
console.log(i, j);
}
}
// 输出:
// 0 0
// 0 1
// 0 2
// 2 0
// 2 1
// 2 2
注意事项和兼容性提醒
虽然 label 是标准语法(ES3 就已支持),但在实际开发中较少使用,原因包括:
- 可读性较差,容易让逻辑变“跳跃”,增加维护成本
- 现代代码更倾向用函数封装 +
return替代多层 break - 不能跨函数或跨作用域引用 label(比如在函数内部 break 外层 label 会报错)
- label 名称不能是保留字,且区分大小写
替代方案建议:把嵌套循环逻辑提取成独立函数,用 return 提前退出,语义更清晰,也更容易测试和复用。

















