标签语句可为循环命名,配合break或continue跳出/跳过指定层级循环;写法为循环前加标识符后跟冒号,标识符需符合变量命名规则且不与关键字冲突。

JavaScript 中用标签语句(label statement)可以为循环命名,再配合 break 或 continue 跳出或跳过指定层级的循环,解决多层嵌套中无法直接跳出外层的问题。
标签语句的基本写法
在循环前加一个标识符,后跟冒号 :,这个标识符就是标签名。标签名需符合变量命名规则,且不能与关键字冲突。
outerLoop: for (let i = 0; isearch: while (condition) { ... }- 标签必须紧挨着循环语句(不能有分号、空行或其它语句隔开)
用 break 标签名 跳出指定外层循环
普通 break 只终止最近的循环,加上标签就能跳到对应循环之外,常用于查找匹配后立即退出所有嵌套。
例如,在二维数组中查找某个值并返回坐标:
立即学习“Java免费学习笔记(深入)”;
const matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let found = false;
let result;
outer: for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] === 5) {
result = { row: i, col: j };
found = true;
break outer; // 直接跳出 outer 标签的 for 循环
}
}
}
console.log(result); // { row: 1, col: 1 }
用 continue 标签名 跳过外层循环的当前迭代
continue 加标签会跳过对应循环的本次执行,进入下一次迭代。适用于需要根据内层条件控制外层流程的场景。
- 比如:遍历多个用户列表,若某用户无权限,则跳过整个用户的处理逻辑
- 注意:
continue只对for、while、do...while有效,不能用于if或普通代码块
示例:
usersLoop: for (const user of users) {
if (!user.isActive) continue usersLoop; // 跳过该用户,不执行后续处理
for (const order of user.orders) {
if (order.status === 'cancelled') continue usersLoop; // 取消订单 → 整个用户跳过
processOrder(order);
}
}
注意事项和常见误区
标签不是作用域,也不影响变量提升或生命周期;它只是给语句起名,供 break/continue 引用。
- 标签只能用在语句前,且该语句必须是可中断的(即循环或
switch) - 不能跨函数使用:标签只在声明它的作用域内有效
- 避免过度嵌套:标签虽能解决问题,但深层嵌套本身是代码可读性隐患,优先考虑重构(如提取函数、用
some/find等数组方法) - 不要用标签跳转到非循环语句上,否则语法报错


















