JavaScript label (標籤)
label 可以用來標記一個迴圈,label 用來搭配 break 和 continue 一起使用。
語法:
label:
statement
break [label];
continue [label];
用法例如:
var x = 0;
var z = 0;
// 把外層的迴圈標記叫做 labelCancelLoops
labelCancelLoops:
while (true) {
console.log('Outer loops: ' + x);
x += 1;
z = 1;
while (true) {
console.log('Inner loops: ' + z);
z += 1;
if (z === 3 && x === 3) {
// 跳出 labelCancelLoops 迴圈
break labelCancelLoops;
} else if (z === 3) {
// 跳出當前迴圈
break;
}
}
}
上面的程式碼會輸出:
Outer loops: 0
Inner loops: 1
Inner loops: 2
Outer loops: 1
Inner loops: 1
Inner loops: 2
Outer loops: 2
Inner loops: 1
Inner loops: 2
可以發現,當你有多層迴圈的時候,label 可以用來很方便的直接跳出外層的迴圈!
用 break; 只會跳出當前這「一個」迴圈。
搭配 continue 也是類似的用法:
var i, j;
// 把外層的迴圈標記叫做 loop1
loop1:
for (i = 0; i < 3; i++) {
// 把內層的迴圈標做 loop2
loop2:
for (j = 0; j < 3; j++) {
if (i === 1 && j === 1) {
// 跳出 loop1 迴圈
continue loop1;
}
console.log('i = ' + i + ', j = ' + j);
}
}
上面的程式碼會輸出:
i = 0, j = 0
i = 0, j = 1
i = 0, j = 2
i = 1, j = 0
i = 2, j = 0
i = 2, j = 1
i = 2, j = 2