본문 바로가기

web

[JavaScript]2중 반복문, 중첩 반복문에서 break, continue

break와 continue는 코딩에서 굉장히 유용하게 사용되는 키워드 입니다.

두 제어문 모두 반복문을 제어하기 위해 쓰입니다.


코딩을 하다보면 2중반복문 혹은 n중반복문을 사용하게 되는 경우가 많은데요. 

이렇게 중첩반복문에서는 원하는 대로 반복문을 컨트롤 하고 싶다면, 약간 특이한 형태의 반복문을 사용해야 합니다.



1
2
3
4
5
6
7
8
9
for(let outLoop = 0; outLoop < 100; outLoop++){
    for(let inLoop = 100; inLoop < 200; inLoop++){
        if(inLoop >= 102){
            break;
        }
    console.log("inLoop = " + inLoop);
    }
  console.log("outLoop = " + outLoop);
}
cs


위의 코드는 중첩 반복문에서 break를 사용한 모습입니다. 

저 코드를 실행하면, inLoop는 늘 101 까지만 출력을하고 outLoop는 99까지 출력을 모두 마친채 종료됩니다.

즉, break는 해당 break가 속한 스코프의 반복문을 종료시킵니다. 이는 continue도 같습니다.


그러면 inner반복문에서 outer반복문을 종료시키려면 어떻게 해야 할까요?


1
2
3
4
5
6
7
8
9
outer : for(let outLoop = 0; outLoop < 100; outLoop++){
    inner : for(let inLoop = 100; inLoop < 200; inLoop++){
        if(inLoop >= 102){
            break outer;
        }
    console.log("inLoop = " + inLoop);
    }
  console.log("outLoop = " + outLoop);
}
cs


name : while(true){

break name;

    }


위의 코드처럼 반복문에 태그를 붙여서 종료시킬 반복문을 명시할 수 있습니다.

위코드의 실행 결과는 inLoop만을 출력하고 outLoop는 출력되지 않습니다. 

만약 저기서 4번라인의 코드를 break inner로 바꾼다면 아까 전의 코드와 같은 역할을 할 것입니다.