for
문은 조건식을 만족할 때 까지 블록 내부의 코드를 반복하는 반복문입니다. 전 포스트에서 배운 while
, do~while
과의 가장 큰 차이점은 조건식 부분이 (초기식;조건식;증감식)
으로 이루어져있다라는 점 입니다. for
문은 다음과 같이 사용합니다.
for(초기식; 조건식; 증감식) {
//반복실행될 코드
}
초기식
은 반복 루프를 제어하기 위한 변수를 선언하는 부분으로 반복문이 첫 실행될 때 한 번만 실행이됩니다.
조건식
은 반복의 종료를 처리하기 위한 식입니다. 초기식에서 시작해 조건식을 만족하면 반복이 종료되게 됩니다.
증감식
은 초기식의 값을 조작해 조건식
을 만족시키도록 하게 하는 식입니다. 증감식
은 반복문이 한 번 실행될 때 마다 한 번 실행됩니다.
또한 초기식
, 조건식
, 증감식
은 모두 생략이 가능합니다. 각 식에 루프 변수(반복문에서 쓰이는 i, j, k, l의 변수)말고 외부에서 선언된 변수나 식을 넣을 순 있으나 이러한 조작은 무한 루프 등의 문제를 발생시키기도 합니다.
for(let i = 1; ; i++) {
//종료를 위한 조건식이 없으므로 무한루프
}
for(let j = 1; j < 2; ) {
//루프 변수 j가 조건식을 만족하지 못해 무한루프
}
for
문도 역시 중첩이 가능합니다. 하지만 이야기했다싶이 반복문같은 경우 성능에 큰 영향을 주므로 가급적이면 중첩되지 않는 방향으로 사용하는 것이 좋습니다.
for(let i = 0; i < 5; i++) {
for(let j = 0; j < 3; j++) {
for(let k = 0; k < 7; k++) {
}
}
}
for
문으로도 무한 루프를 만들 수 있습니다. 단순히 초기식이 조건식을 영원히 만족시키지 못하게 만들 수 있지만, 더 간단하게 초기식, 조건식, 증감식을 모두 비워 무한 루프 반복문을 만들 수 있습니다.
for (;;){
}