while문을 사용하면 특정 조건이 충족되는 동안 코드를 반복해서 실행할 수 있어요.
while 키워드를 쓰고, 그 뒤에 소괄호로 감싼 조건과, 중괄호로 감싼 루프의 _본문_을 담은 코드 블록을 붙여서 작성해요.
while (condition) {
// code that is executed repeatedly as long as the condition is
// true
}
JavaScript에는 do-while문도 있어요.
이 문법에서는 루프 본문을 실행한 뒤에 조건을 검사해요.
조건이 본문에서 수행한 계산에 따라 달라질 때 유용해요.
do {
// The code here will always be executed once and then
// repeatedly while the condition is true.
} while (condition);
break루프 본문 안에서 break 키워드를 사용하면 루프 실행을 완전히 멈출 수 있어요.
이때 조건으로 true를 함께 쓰는 경우가 많아요.
이렇게 하면 루프 본문 어디에서든 루프를 언제 멈출지 제어할 수 있어요.
const winningNumber = 7;
while (true) {
const num = readUserGuess();
if (num === winningNumber) {
break;
}
}
break 키워드는 루프 안에 중첩된 함수 안에서는 사용할 수 없어요. 예시는 MDN 문서를 참고해요.
continuebreak와 달리 continue 키워드는 현재 반복의 실행만 멈추고 다음 반복으로 넘어가요.
continue를 사용하면 루프 본문의 많은 부분을 if문으로 감싸는 일을 자주 피할 수 있어요.
let i = 0;
while (i < 100) {
i = i + 2;
if (i % 3 === 0) {
continue;
}
// The code here will only be executed when i was not divisible
// by 3 in the check above.
}
루프 조건이 항상 충족되고 루프 본문에서 break나 return문에 도달하지 않으면 (이론적으로) 영원히 반복되는 루프가 만들어져요.
이 경우 실행은 외부에서 종료해야 해요.
이런 코드가 실행되는 환경에 따라 자동으로 종료되기도 하고, 직접 개입해야 하기도 해요.
let i = 0;
while (i < 100) {
if (i % 3 === 0) {
continue;
}
i = i + 2;
}
// This loop runs forever since the variable i does not change
// anymore after it is divisible by 3 the first time.
이런 단순한 예제에서는 무한 루프를 찾아내는 게 쉬워 보일 수 있지만, 코드가 더 복잡해지면 항상 그렇게 간단하지만은 않아요.
조건이 결국 거짓이 되는지, 또는 break나 return문에 도달하는지 꼼꼼히 따져 보는 것이 좋은 습관이에요.