Break KHÔNG label
Thoát khỏi vòng lặp gần nhất (inner-most).
while (x < 20) {
if (x == 5) break; // thoát while này
x++;
}
Break CÓ label
Thoát khỏi vòng lặp có label chỉ định (thường là outer loop).
outer: for (var i=0; i<5; i++) {
for (var j=0; j<5; j++) {
if (i==2 && j==1) break outer; // thoát cả 2 vòng
console.log(i,j);
}
}
// Output: (0,0-4), (1,0-4), (2,0) -> stop
So sánh
| Đặc điểm | break (no label) | break label |
|---|---|---|
| Phạm vi thoát | Vòng lặp chứa nó (innermost) | Vòng lặp có label khớp |
| Dùng cho | Single loop, switch | Nested loop cần thoát outer |
| Switch | Thoát switch | Không áp dụng (switch không có label) |
Khi nào dùng label
- Nested loop cần thoát hẳn từ deep level.
- Tìm kiếm 2D: tìm thấy → break outer.
Thay thế hiện đại (khuyên dùng)
// Tách hàm + return
function find(matrix, target) {
for (const row of matrix) {
for (const cell of row) {
if (cell === target) return cell;
}
}
return null;
}