IT_Programming/JavaScript

자바스크립트 완벽가이드 - 6.8 for

JJun ™ 2010. 7. 4. 20:31


대개 for 문을 사용하면 while 문보다 좀 더 편리하게 루프를 만들 수 있다.

 

for 문은 대부분의 루프에서 나타나는 공통적인 패턴(앞서 보았던 while 루프 예도 포함해서)을 사용한다.

대부분의 루프에는 어떤 종류든지 카운터 변수가 있기 마련이다. 이 변수는 루프가 시작하기 전에 초기화되고, 루프의 매회 반복에 앞서 평가되는 '표현식'의 일부로서 테스트된다. 마지막으로 루프 몸체의 끝에서

즉 '표현식'이 다시 평가되기 직전에 이 카운터 변수가 증가되거나 갱신된다.


초기화, 테스트 그리고 갱신은 루프 변수에 대한 가장 핵심적인 세 가지 작업이다. for 문은 이러한 세 단계를 루프 문법 내부에 명시적으로 못박아 놓고 있다. 이 점 덕분에 for 루프의 작동을 이해하기가 더 간단하다.

또한 루프 변수의 초기화나 증가를 실수로 빠뜨리는 것도 예방할 수 있다.

 

for 문의 문법은 다음과 같다.

for(초기화; 테스트; 증가)
문장


for 루프의 작동을 가장 쉽게 설명하는 방법은 그와 동등한 while 루프를 보여 주는 것이다.[각주:1]

초기화;
while(테스트) {
문장
증가;
}


바꿔 말하면 루프가 시작되기에 앞서 '초기화' 표현식이 한 번 평가된다. 이 표현식이 실제로 유용하려면

무언가 부수 효과가 있는 표현식이어야 한다. (보통 할당 표현식) 자바스크립트에서는 '초기화' 자리에

var에 의한 변수 선언문도 허용하고 있기 때문에, 루프 카운터를 선언하는 동시에 초기화할 수도 있다.

'테스트' 표현식은 매회 반복이 일어나기 직전에 평가되며, 루프의 몸체의 '문장'이 실행된다.

 

마지막으로 '증가' 표현식이 평가된다. 마찬가지로 이 표현식 역시 부수 효과가 없으면 쓸모가 없다.

일반적으로 이 표현식은 할당 표현식이거나 ++나 --연산자를 사용하는 표현식이다.


지난 절에서 예로 들었던 while 루프 코드는 다음과 같이 0부터 9까지 카운트 되는 for 루프로

다시 작성될 수 있다.

for(var count = 0 ; count < 10 ; count++)
document.write(count +"<br>");


위에 쓰인 것같이 for 문의 문법은 루프 변수에 관한 모든 중요한 정보를 단 한 줄에 보여 준다. 덕분에 어떻게 루프가 실행되는지 명확하게 알 수 있다. 또한 '증가' 표현식을 for 문 자체에 넣음으로써 루프 몸체도 단 한 문장만으로 깔끔해졌다. 문장 블록을 만들기 위해 중괄호를 사용할 필요도 없어졌다.


당연한 사실이지만, 위에서 보았던 간단한 예제들보다 훨씬 더 복잡한 루프도 많다. 때로는 매회 루프가 돌 때마다 여러 개의 변수가 함께 변하기도 한다. 자바스크립트에서 쉼표 연산자가 널리 쓰이는 곳이 바로 이런

상황에서다. 쉼표 연산자를 사용하면 여러 개의 초기화나 증가 표현식을 for 루프에 사용하기 좋게 단 하나의 표현식으로 조합해낼 수 있다. 예를 들어보자.

for(i = 0, j = 10 ; i < 10 ; i++, j--)
sum += i * j;

 

 

    1) 6.12절에서 접하게 될 continue 문을 감안하면 while 루프가 for 루프와 정확히 같지는 않다. [본문으로]