Frontend/JavaScript

[js] label : 중첩 반복문을 한번에 빠져나오고 싶을 때

양원준 2024. 4. 16. 18:37
728x90

 

 

아래 예시와 같이 자바스크립트에서 중첩으로 반복문을 돌릴 때 한번에 빠져 나올수 있는 방법은 무엇일까

for (let i = 0; i < 3; i++) {
  for (let j = 0; j < 3; j++) {
    // 여기
  }
}

 

 

 

label(레이블)

 

반복문 앞에 붙혀서 사용할 수 있으며 중첩 반복문을 빠져 나갈 수 있다

  • 반드시 break와 continue 앞에 있어야 하며
  • break는 모든 레이블 구문에서 사용 가능
  • continue는 반복문 안에서만 사용 가능하다
label 이름:
	구문

 

 

 

 

label을 이용해 중첩반복문 빠져 나오기

continue

loop1:
for (let i = 0; i < 3; i++) {
    loop2:
    for (let j = 0; j < 3; j++) {
        if (i === 1 && j === 1) {
            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

 

 

i === 1 && j === 1 을 만나면 loop1로 continue

 

 

break

loop1:
for (let i = 0; i < 3; i++) {
    loop2:
    for (let j = 0; j < 3; j++) {
        if (i === 1 && j === 1) {
            break loop1;
        }
        console.log('i: ' + i + ', j: ' + j);
    }
}

// i: 0, j: 0
// i: 0, j: 1
// i: 0, j: 2
// i: 1, j: 0

 

i === 1 && j === 1 을 만나면 loop1을 break

 

 

 

반복문이 아닌 경우 label 사용 (break만 가능)

loop: {
  console.log("yang");
  break loop;
  console.log("hi");
}
console.log("won");

// "yang"
// "won"

 

 

 

label을 이용하여 숫자 소수 출력한 예시 코드

let n = 14

nextNum: for (let i = 2; i <= n; i++) {
    for (let j = 2; j < i; j++) {
        //나머지가 0이면 나누어 떨어지므로 넘어감
        if (i % j == 0) continue nextNum
    }
    console.log(i)
}

//2,3,5,7,11,13

 

 

 

 

 

 

728x90