본문 바로가기
HTML, CSS, JavaScript/자바스크립트

반복문 (break, continue 레이블)

by JDI_ 2022. 6. 29.

1. break

반복문이 완료되기 전에 종료하고 싶을 때 사용한다.

switch 조건문에서 본적 있다.

for(i = 0; i < a.length; i++) {
	if (a[i] == theValue) {
    	break;
    }
}

2. continue

break와 비슷하게 동작하지만, 반복문을 완전히 탈출하는게 아니라 반복문의 다음 반복문으로 건너뛸 때 사용한다.

i = 0;
n = 0;

while(i < 5){
	i++;
    if(i == 3){
    	continue;
    }
    n += i;
}

3. label

label은 프로그램에서 다른 곳으로 참조할 수 있도록 식별자로 문을 제공하는 것이다. 

쉽게 이름표를 붙인다고 생각하면 좋을 것 같다.

 

아래와 같은 방식으로 이름을 붙인다.

label :
	statement

예시

markLoop:
while (theMark == true) {
	doSomething();
}
// while문에 markLoop라는 이름표를 붙였다

 

반복문 등에 레이블을 붙이고 break나 continue를 써서 반복문의 어느 위치에서 작업을 멈추고 어디서 다시 실행할지 알려줄 수 있다.

(자바스크립트에는 goto구문이 없다)

break label;

continue label;

예시) continue label

var i, j;

loop1:
for(i = 0; i < 3; i++){  //첫번째 for문에 loop1 레이블을 붙임
	loop2:
    for(j = 0; j < 3; j++){ //두번째 for문에 loop2 레이블을 붙임
    	if(i === 1 && j === 1){
        	continue loop1; // i가 1이면서 j도 1일 때 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", "i = 1, j = 2"

// i = 0 j = 0, 1, 2 
// i = 1 j = 0, 1, 2 -> i = 1, j = 1이 되는 순간에 i = 1인 loop1을 다음 반복으로 건너뛰기 때문에 
//i = 2인 반복으로 넘어간다
// i = 2 j = 0, 1, 2

예시) break label

var i, j;

loop1:
for(i = 0; i < 3; i++){  //i인 for문에 loop1
	loop2:
    for(j = 0; j < 3; j++){ //j인 for문에 loop2
		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이 됨과 동시에 i=1인 반복문을 바로 탈출한다.

 

참고 : https://ko.javascript.info/while-for

참고 : https://developer.mozilla.org/ko/docs/Learn/JavaScript/Building_blocks/Looping_code

참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Loops_and_iteration

참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/label

 

'HTML, CSS, JavaScript > 자바스크립트' 카테고리의 다른 글

화살표 함수 기본  (0) 2022.06.30
함수(함수 선언, 함수 표현식, 재귀함수)  (0) 2022.06.29
반복문 (for, while, do-while)  (0) 2022.06.29
nullish 병합 연산자 ??  (0) 2022.06.28
논리 연산자  (0) 2022.06.28

댓글