개요
자바스크립트로 뭔가를 하다보면 뭔가를 반복적으로 사용해야 할 일이 생긴다.
예를들어 콘솔에 "a"를 3번 출력 한다고 하면
console.log("a");
console.log("a");
console.log("a");
이런식으로 될것이고, "a"를 10번 출력해야 한다면
console.log("a");
console.log("a");
console.log("a");
console.log("a");
console.log("a");
console.log("a");
console.log("a");
console.log("a");
console.log("a");
console.log("a");
이렇게 쓰여질것이다. 물론 이건 뭔가.. 뭔가.. 나쁘진 않지만 뭔가.. 뭔가 무식해보인다. ( 가끔은 저게 먹힐때가 있음 )
그럴때 사용하는게 반복문이다.
반복문
굳이 자바스크립트가 아니더라도 어지간한 프로그래밍 언어들은 기본적으로 다 반복문이 있다.( + 조건문 )
사실상 반복문이랑 조건문만 알고있으면 어지간한 초급레벨 프로그래밍 테스트는 다 할 수 있지 않을까?..
라고 생각은 하고 있긴 하지만.. 어쨌든 무언가를 특정 조건이 충족 될 때 까지 반복해서 실행해주는 문을
반복문이라고 한다.
while
자바스크립트에는 반복을 위한 여러가지 방법이 있지만 이번포스트에서는 제일 심플한 while을 살펴보자.
구문
while (조건)
실행할 문
while (조건){
실행할 문
실행할 문
}
조건이 true 라면 실행할 문이 실행된다. 영원히.
실행하고 싶은 문장이 2줄 이상이라면 중괄호 {} 로 포함시켜주자.
예제
let count = 0;
while (count < 5) count ++;
console.log(count);
//5
위의 예제가 실행되면 count 변수는 0으로 초기화되고, while 문에 의해
count값이 5보다 작을때 count에 1을 계속해서 더해준다.
count = 0
0 < 5 : true count 1추가
1 < 5 : true count 1추가
2 < 5 : true count 1추가
3 < 5 : true count 1추가
4 < 5 : true count 1추가
5 < 5 : false while문 종료
console.log(count) : 5
break, continue
while 문에만 쓰이는건 아니고, 자바스크립트 자체적으로 반복문, switch 문, 또는 label 문을 조작할때 사용된다.
break : "현재 반복문을 여기까지만 하고 종료"
continue : "현재 반복을 종료하고 반복문의 처음으로 돌아감"
예시를 보면,
let count = 0;
while (count < 3){
count ++
console.log(count)
}
// 1
// 2
// 3
let count = 0;
while (count < 3){
if(count === 2) break;
count ++
console.log(count)
}
// 1
// 2
그 다음 반복문이 남아있더라도 반복문을 종료한다.
응용하면 이런것도 가능하다.
let count = 0;
while (true) {
count ++;
if(count >= 5) break;
}
console.log(count);
// 5
반대로, 특정 케이스 일때만 다음 반복으로 돌리고 싶다면 continue; 를 사용하면 된다.
let count = 0;
while (count < 10){
count ++;
if(count%2 === 0) continue;
console.log(count);
}
// 1
// 3
// 5
// 7
// 9
break와 다르게 그 위치에서 반복문을 처음으로 돌아가게 한다.
break, continue를 적절하게 잘 사용하면, while문 하나로도 이런저런 다양한 조작이 가능하다.
do ... while
while 문의 조건에서 초기값이 false 더라도 한번은 실행하고 싶을때가 있을것이다.
그럴땐 보통 아래와 같이 작업을 했었는데,
let count = 0;
count ++;
while (count < 0) count ++;
console.log(count);
//1
do ... while 문을 쓰면 초기값이 false더라도 한번은 실행 되게 할 수 있다.
do 실행할 문
while(조건);
do {
실행할 문
} while(조건);
let count = 0;
do {
count ++;
} while (count < 10)
console.log(count);
//10
알아두면 언젠가 생각날때 요긴하게 쓸 수 있을것 같다.