반복문


1부터 100까지 숫자를 출력하거나, 단어 속 모든 글자에 인사를 건네거나, 정답이 나올 때까지 계속 질문을 던지고 싶다고 해봅시다. 같은 줄을 백 번 써도 되지만, 입력하기도 번거롭고 나중에 수정하기는 더 번거롭습니다. 반복문은 같은 코드를 여러 번 실행하도록 자바스크립트에 지시하는 방법으로, 작업 코드는 한 번만 작성하고 반복은 언어가 대신 처리하게 해줍니다. 이 장에서는 가장 많이 쓰는 세 가지 반복문인 for, while, for...of를 다룹니다.
for 반복문
**for 반복문**은 몇 번 반복할지 알고 있을 때 사용합니다. 횟수를 대신 세어줍니다. 다음은 0부터 4까지 숫자를 출력하는 예입니다:
for (let i = 0; i < 5; i++) {
console.log(i);
}
// 0
// 1
// 2
// 3
// 4괄호 안 부분은 세미콜론으로 구분된 세 부분으로 이루어져 있습니다:
let i = 0은 시작입니다:i라는 이름의 카운터를 만들고 0으로 설정합니다.i < 5는 조건입니다: 이 조건이 참인 동안 반복문이 계속 실행됩니다.i++는 단계입니다: 매번 실행이 끝날 때마다i에 1을 더합니다(i++는i = i + 1을 줄인 표현입니다).
즉, 반복문은 i를 0에서 시작하고, i < 5인지 확인한 다음, 중괄호 안의 코드를 실행하고, 1을 더한 뒤 다시 확인합니다. i가 5에 도달하면 조건이 거짓이 되어 반복문이 멈춥니다.
for 반복문은 정해진 횟수만큼 반복하며 횟수를 대신 세어줍니다. 헤더는 세 부분으로 이루어져 있는데, let i = 0 같은 시작, 반복을 계속하게 하는 i < 5 같은 조건, 진행시키는 i++ 같은 단계입니다. 조건이 거짓이 되면 반복문이 멈춥니다. while 반복문
때로는 몇 번 반복할지 모르고, 참으로 유지되어야 하는 조건만 알고 있는 경우가 있습니다. 그럴 때 쓰는 것이 **while 반복문**입니다. 조건이 유지되는 동안 계속 실행됩니다:
let count = 3;
while (count > 0) {
console.log(count);
count = count - 1;
}
console.log("Go");
// 3
// 2
// 1
// Go반복문은 count > 0을 확인하고, 코드를 실행한 다음, 다시 확인합니다. 반복문 안에서 무언가가 count를 바꾸고 있다는 점에 주목하세요. 그래야 조건이 결국 거짓이 되어 반복문이 멈춥니다. 반복문 안의 무언가가 조건을 거짓으로 만들지 않으면 반복문은 영원히 실행됩니다. 이것이 무한 루프이며, 프로그램을 멈춰버리게 하므로 조건이 바뀔 수 있도록 항상 신경 써야 합니다.
while 반복문은 조건이 참인 동안 반복하며, 내장된 카운터가 없습니다. 반복 횟수를 미리 알 수 없을 때 사용하세요. 조건이 거짓이 될 수 있도록 반복문 안에서 항상 무언가를 바꿔야 합니다. 그러지 않으면 프로그램을 멈춰버리는 무한 루프가 생깁니다. for...of로 문자열 순회하기
for와 while 반복문은 숫자로 횟수를 세지만, 어떤 대상 안의 각 항목을 직접 방문하고 싶을 때가 많습니다. **for...of**가 바로 그런 일을 합니다. 다음은 단어의 각 글자를 순회하는 예입니다:
for (const char of "hello") {
console.log(char);
}
// h
// e
// l
// l
// o"단어의 각 글자에 대해"라고 읽으면 됩니다. 매 실행마다 char에는 다음 글자가 들어가며, 카운터나 조건을 전혀 다룰 필요가 없습니다. 모든 항목을 순서대로 살펴보는 것이 목적이라면 for 반복문보다 더 깔끔합니다.
for...of는 대부분 다음 장들에서 만날, 값들의 목록인 배열에서 사용하게 됩니다. 문자열은 처음 순회해보기에 좋은 대상인데, 이미 글자들의 나열이기 때문이고, for...of도 문자열을 정확히 그렇게 다룹니다.
for...of는 카운터나 관리해야 할 조건 없이 각 항목을 직접 방문합니다. 문자열에서는 매 실행마다 다음 글자를 건네줍니다. 나중에 배열에서 가장 많이 사용하겠지만, 문자열은 이미 글자들의 나열이므로 처음 순회해보기에 깔끔한 대상입니다. 반복문, 그 다음은
반복문은 같은 코드를 반복해서 쓰지 않고 언어가 대신 반복을 처리하게 해주는 방법입니다. for 반복문은 정해진 횟수만큼 세고, while은 조건이 유지되는 동안 반복하며, for...of는 시퀀스의 항목들을 직접 순회합니다. 여기서 꼭 가져가야 할 습관 하나는, 모든 반복문이 반드시 끝날 수 있도록 하고, 각 항목만 필요하다면 for...of를 선호하는 것입니다.
반복문이 정말 중요한 이유는 여러분이 다루게 될 데이터 대부분이 컬렉션 형태로 온다는 점입니다. 다음 장들에서는 여러분이 끊임없이 순회하게 될 목록인 배열을 소개하고, 이어서 데이터를 변환할 때 수동으로 작성한 반복문을 대신 대체하곤 하는 배열 메서드를 다룹니다. 반복문이 의존하는 조건을 더 다듬고 싶다면, 조건문에서 반복문이 계속될지 멈출지를 결정하는 비교 방법을 다룹니다.

