코드를 구성하다보면 특정 조건에서 발생하도록 유도하는 조건문, 반복되는 문장을 쉽게 반복할 수 있는 반복문과 같은 제어문들이 필요하다.
자바스크립트에서 반복문은 for
, while
, do ~ while
을 통해 구현할 수 있다.
for
을 이용한 반복문은 아래와 같이 사용할 수 있다.
for (변수 선언 및 초기화; 조건; 실행) {
// 반복문 실행 내용
}
예시를 통해 보면,
for (let i = 0; i < 10; i++) {
console.log(i + 1);
}
반복문은 1부터 10까지 출력하는 반복문이다.
순서대로 보면,
for
문에 진입하면서let i = 0
, i
라는 변수를 선언하면서 값에 0
을 할당한다.i < 10
이라는 조건이 맞을 경우 console.log(i + 1)
을 통해 i + 1
, 즉 1
을 출력한다.i++
를 통해 i
의 값을 +1
한다. (i = 1
)i
의 값은 9
이다. 출력 후 i++
를 통해 i
의 값은 10
이 되었다.i < 10
의 조건에 false
값이 되어 반복문을 끝낸다.위의 순서대로 반복문이 동작하게 된다.
while
도 for
와 마찬가지로 반복문을 구현하는데 사용한다.
while (조건) {
//실행
}
while
의 경우 조건이 참이면, 내부의 코드가 실행된다.
let i = 0;
while (i < 10) {
console.log(i + 1);
}
위 코드는 for
의 예시와 같이 동작할까?
아니다.
위 코드의 동작은 1을 계속해서 출력하게 될 것이다. 무한히
왜냐하면 i
의 값은 변함없이 0이기 때문에 i < 10
이라는 조건에 무한히 참이다. 그렇기 때문에 while
이 종료되지 못하고 무한히 출력하게 된다.
let i = 0;
while (i < 10) {
console.log(i + 1);
i++;
}
i++
와 같은 코드를 작성해줘야 1부터 10까지 출력한 뒤 종료되게 된다.
가만, 그렇다면 무한히 동작하는 코드를 구현하고자 한다면?
while (true) {
// 무한히 실행될 코드
}
위와 같이 조건에 true
를 준다면 무한히 실행되는 코드를 작성할 수 있다.
그렇다면, 중간에 빠져나오고 싶다면?
break
를 통해 중단점을 잡아주면 된다.
let i = 0;
while (true) {
console.log(i + 1);
i++;
if (i > 9) break;
}
if
를 통해 조건문을 사용하고 break
를 사용하면, 조건에 참일 때 반복을 멈출 수 있다.
do ~ while
의 경우 while
과 비슷하지만,
do
내부의 코드를 반드시 1번은 실행한다는 것이 다르다.
let i = 10;
// 10 출력하고 종료
do {
console.log(i);
} while(i < 10);
// 아무것도 하지 않음
while (i < 10) {
console.log(i);
}
반복문을 사용할 땐 for
, while
, do~while
이 있다.
while
을 사용하면 무한 루프를 구현할 수 있다.
하지만 무한 루프를 사용할 땐 조건에 조심하자.