본문 바로가기
개발

JavaSript. Label(레이블)

by 강누비 2024. 3. 21.
반응형

이번에는 Label(이하, 레이블)에 대해서 살펴보려 한다.

 

반복문에 레이블을 붙이고, C언어에서 사용되는 goto문과 같이 break나 continue 구문을 사용해 반복문의 어느 위치에서 작업을 멈추고 어느 위치에서 다시 수행할지를 알려줄 수 있다.

 

● 사용방법

레이블을 사용하는 방법은 아래와 같다.

label:
  statement;

 

 

● 사용예시

 

아래는 레이블의 break을 활용한 예제이다.

let sum = 0, a = 1;

// Label for outer loop
outerloop: while (true) {
	a = 1;
	// Label for inner loop
	innerloop: while (a < 3) {
		sum += a;
		if (sum > 12) {
			// Break outer loop from inner loop
			break outerloop;
		}
		console.log("sum = " + sum);
		a++;
	}
}

 

위의 코드를 예시로 출력결과를 예상해 보자.

 

  • outerloop는 while문의 true 가 종료 조건으로 무한 반복된다.
  • innerloop의 while 내부에  sum이 12를 초과하면 " break outerloop; " 레이블의 break를 활용하여 outerloop를 종료시킨다.
  • innerloop의 while문의 종료 조건은 a가 3 이상이다.
  • innerloop에서 루프를 돌 때마다 a가 1씩 증가된다.

 

이와 같이 해당 코드는 sum이 12보다 클 때 종료가 되는 것을 볼 수 있으며, console에 아래와 같이 출력되는 것을 확인할 수 있다.

// 출력 결과
sum = 1
sum = 3
sum = 4
sum = 6
sum = 7
sum = 9
sum = 10
sum = 12

 

 

 

 

아래는 레이블의 continue을 활용한 예제이다.

let sum = 0, a = 1;
 
// Label for outerloop
outerloop: while (sum < 12) {
    a = 1;
      // Label for inner loop
      innerloop: while (a < 3) {
        sum += a;
        if (a === 2 && sum < 12) {
              // Jump to outer loop from inner loop
              continue outerloop;
        }
        console.log("sum = " + sum + " a = " + a);
        a++;
      }
}

 

위의 코드를 예시로 출력결과를 예상해 보자.

 

  • outerloop는 while문의 종료조건은 sum이 12보다 크면 종료된다.
  • innerloop의 while 내부에  a가 2이면서 sum 이 12보다 작으면 outerloop가 continue 되어 아래의 콘솔을 실행시키지 않는다. 
  • innerloop의 while문의 종료 조건은 a가 3 이상이다.
  • innerloop에서 루프를 돌 때마다 a가 1씩 증가된다.

 

이와 같이 해당 코드는 sum이 12보다 클 때 종료가 되는 것을 볼 수 있으며, console에 아래와 같이 출력되는 것을 확인할 수 있다.

//출력 결과
sum = 1 a = 1
sum = 4 a = 1
sum = 7 a = 1
sum = 10 a = 1
sum = 12 a = 2

 

 

 

 

 

아래는 블록에 레이블을 사용한 예시이다.  

 

blockOfCode: {
    console.log('This part will be executed');
    break blockOfCode;
    console.log('this part will not be executed');
}
console.log('out of the block');

 

첫 번째 'This part will be executed'를 출력 후 blockOfCode 레이블의 break를 통해 해당 블록의 코드가 종료된 것을 출력을 통해 볼 수 있다.

//출력 예시
This part will be executed
out of the block

 


 

반복문아닌 레이블break만 가능


 

반응형