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