break [label];
continue [label];
label: // 레이블 문
  statement; // 실행 위치에 해당하는 특정한 문(statement) 
/* 레이블 문을 사용하지 않은 경우 */
for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        if (i === 1 && j === 1) {
            break; // 가장 내부의 반복문만 종료합니다.
        }
        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
*/

/* 레이블 문을 사용한 경우 */
outerLoop: for (let k = 0; k < 3; k++) {
    for (let l = 0; l < 3; l++) {    
        if (k === 1 && l === 1) {
            break outerLoop; // outerLoop 레이블이 있는 반복문을 종료합니다.
        }
        console.log(`k: ${k}, l: ${l}`);
    }
}
/*  출력 결과
    k: 0, l: 0
    k: 0, l: 1
    k: 0, l: 2
    k: 1, l: 0
*/
/* 레이블 문을 사용하지 않은 경우 */
for (let i = 0; i < 3; i++) {
    for (let j = 0; j < 3; j++) {
        if (i === 1 && j === 1) {
            console.log("Skipping i: 1, j: 1");
            continue; // 현재 반복문의 다음 반복으로 이동합니다.
        }
        console.log(`i: ${i}, j: ${j}`);
    }
}
/*  출력 결과
    i: 0, j: 0
    i: 0, j: 1
    i: 0, j: 2
    i: 1, j: 0
    Skipping i: 1, j: 1
    i: 1, j: 2
    i: 2, j: 0
    i: 2, j: 1
    i: 2, j: 2
*/

/* 레이블 문을 사용한 경우 */
outerLoop: for (let k = 0; k < 3; k++) {
    for (let l = 0; l < 3; l++) {    
        if (k === 1 && l === 1) {
            console.log("Skipping k: 1, l: 1");
            continue outerLoop; // outerLoop 레이블이 있는 반복문으로 이동합니다.
        }
        console.log(`k: ${k}, l: ${l}`);
    }
}
/*  출력 결과
    k: 0, l: 0
    k: 0, l: 1
    k: 0, l: 2
    k: 1, l: 0
    Skipping k: 1, l: 1
    k: 2, l: 0
    k: 2, l: 1
    k: 2, l: 2
*/
myBlock: {
  console.log("블록 내부입니다.");
  break myBlock; // 레이블이 붙은 블록을 빠져나옵니다.
  console.log("이 부분은 실행되지 않습니다.");
}

console.log("블록 외부입니다.");

/*  출력:
    "블록 내부입니다."
    "블록 외부입니다"
*/
myBlock: {
    console.log('1');
    break outerBlock; // SyntaxError: Undefined label 'outerBlock'
}

outerBlock: {
    console.log('2');
}