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