标签语句本身不执行任何操作,仅用于为语句命名以供break或continue精确跳转非最近一层循环或代码块;标签由标识符加冒号构成,须紧贴目标语句前且仅适用于声明、块、循环或switch语句。

JavaScript 的标签语句(label statement)本身不执行任何操作,它的唯一作用是为某条语句命名,以便 break 或 continue 能够精确控制**非最近一层**的循环或代码块。这是 JavaScript 中少数能跳出多层嵌套循环的原生机制。
标签的基本写法和作用范围
标签由一个标识符后跟冒号(:)组成,必须紧贴在语句前(不能换行),且只能用于声明语句、块语句({...})、循环(for/while/do...while)或 switch 语句上。
例如:
outer: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) break outer;
console.log(i, j);
}
}
立即学习“Java免费学习笔记(深入)”;
这段代码会在 i=1, j=1 时直接跳出外层循环,不再执行后续的 i=1,j=2 和所有 i=2 的迭代。
break label:跳出指定标签的语句
break 后跟标签名时,会立即终止该标签所标记的语句,并将控制权转移到该语句之后的第一条语句上。
- 标签必须在当前作用域内可见(不能跨函数或跨块引用)
- 被标记的语句必须是“可中断的”——即块、循环或 switch;不能是
if或表达式语句 - 如果标签不存在或拼写错误,运行时报错:
ReferenceError: label not found - 常见用途:从双重/多重循环中提前退出,避免用标志变量(flag)层层传递
continue label:跳到指定标签语句的下一次迭代
continue 配合标签时,只对循环语句有效(for、while、do...while),它会让控制流跳回到**该标签所标记的循环头部**,并开始下一轮判断。
例如:
outer: for (let i = 0; i < 3; i++) {
console.log('outer:', i);
for (let j = 0; j < 3; j++) {
if (j === 1) continue outer;
console.log('inner:', i, j);
}
}
当 j === 1 时,continue outer 会让程序跳过当前内层循环剩余部分,直接进入外层循环的下一次迭代(i++ 后重新判断 i )。
实际使用中的注意事项
- 标签不能用于函数、
if、return等语句,否则语法错误 - 标签名不能是保留字(如
break、function),也不能与变量同名(虽不报错,但易混淆) - 现代开发中较少显式使用标签,更多依赖函数提取、
some/every或throw模拟跳出(如自定义错误 + try/catch) - 在性能敏感或嵌套很深的算法(如矩阵搜索、回溯)中,标签仍是简洁可靠的底层控制方式










