JavaScript中可用命名标签配合break或continue跳出或跳过指定循环层级,语法为在for/while/do...while前加“标识符:”,标签名须符合变量命名规则且不与关键字冲突。

JavaScript 中用 命名标签(label)配合 break 或 continue,可以跳出或跳过指定层级的循环,尤其在多层嵌套时比层层设标志位更直接清晰。
语法结构:给循环加标签
在任意循环语句(for、while、do...while)前加一个标识符和冒号,即为标签。标签名需符合变量命名规则,且不能与关键字冲突。
例如:
outerLoop: for (let i = 0; i < 3; i++) {
innerLoop: for (let j = 0; j < 3; j++) {
if (i === 1 && j === 1) break outerLoop; // 直接跳出最外层
console.log(i, j);
}
}
// 输出:0 0, 0 1, 0 2, 1 0
break 和 continue 都支持标签跳转
break 标签名会立即退出该标签所标记的整个循环体;continue 标签名则跳到该标签循环的下一次迭代开始(仅对 for 和 while 有效,do...while 不适用)。
立即学习“Java免费学习笔记(深入)”;
-
break outer;→ 终止并退出outer:循环,后续代码继续执行 -
continue outer;→ 跳过当前迭代,直接进入outer循环的条件判断或更新表达式 - 标签必须位于被跳转的循环语句正前方,中间不能有其他语句(包括空行、注释也不行)
实际常用场景:二维数组查找后立即退出
遍历矩阵时,一旦找到目标值,无需再查其余位置,用带标签的 break 可避免冗余遍历和额外布尔变量。
const matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let found = null;
search: for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
if (matrix[i][j] === 5) {
found = { row: i, col: j };
break search; // 一步到位,不进内层 else 或外层剩余迭代
}
}
}
console.log(found); // { row: 1, col: 1 }
注意事项和限制
- 标签只能用于语句块(如循环、
switch),不能标注普通代码块({...}) - 不能跨函数跳转,标签作用域仅限于其声明所在的作用域内
- 不推荐过度嵌套 + 大量标签,可读性会下降;超过三层建议封装为函数或改用
some()/find()等数组方法 -
continue标签在for中跳到更新语句,在while中跳回条件判断


















