예전 회사 내부에서 스터디용으로 작성했던 글입니다.
(에버노트에 작성했던걸 가져왔더니
글 여백이나 줄바꿈 수정이 힘드네요..ㅠ)
for 반복문은 보통 코드를 지정한 수만큼 실행할 경우에 사용합니다.
반복문을 사용하게 되면 반복되거나 순차적인 코드를 손쉽게 처리할 수 있습니다.
javascript 의 반복문은 for문 외에도 while, do..while, for..in 문 등이 있습니다.
for 문의 형식은 다음과 같습니다.
1
2
3
|
for ([초기화부]; [조건부]; [순회표현식]){ [수행부] } |
초기화부 (initialization)
초기화 부는 한번만 실행되며, 일반적으로 변수에 값을 지정하거나 변수를 선언합니다. 일반적으로 카운트(count) 할 수 있는 변수를 사용하거나 선언하며, 이곳에 선언한 변수의 접근영역(scope)은 for 문 안에 머무르는게 아니라 for 문 밖에서도 접근이 가능합니다.조건부 (condition)
조건부는 for 문이 순환하기 전 조건이 참인지 거짓인지 판별합니다. 조건이 참이면 수행부를 순회하며, 조건이 거짓이면 for 문을 빠져 나옵니다.순회표현식 (loop-expression)
순회표현식은 for 문을 순회하는 동안 한번의 순회가 끝나면 실행되는 구문입니다. 일반적으로 초기화부에 선언한 카운트 변수를 갱신, 가감 하는데 사용됩니다.수행부 (statement)
조건부의 조건이 참인 경우 실행하게 되는 구문입니다.실 사용예를 보겠습니다.
1
2
3
4
|
var sum = 0; for ( var i = 0; i < 10; i++) { sum += i; } |
일반적으로 사용하는 구문입니다. 그럼 변수 sum 과 i 의 값을 출력해보면 값은 어떻게 나올까요?
1
2
3
4
5
6
|
var sum = 0; for ( var i = 0; i < 10; i++) { sum += i; } console.log(sum); //45 console.log(i); //10 |
변수 sum 은 45, 변수 i 는 10 이 나옵니다.
for 문의 실행 주기(execute-cycle)를 모르는 경우 변수 sum 이나 i 의 값을 틀리기 쉽습니다. 특히 변수 i 를 10이 아닌 9 로 생각하시는 분들이 꽤 있을겁니다.
왜 10이 나오는지 아래 실행 주기를 참고해 보세요.
for 문의 실행 주기(execute-cycle)를 모르는 경우 변수 sum 이나 i 의 값을 틀리기 쉽습니다. 특히 변수 i 를 10이 아닌 9 로 생각하시는 분들이 꽤 있을겁니다.
왜 10이 나오는지 아래 실행 주기를 참고해 보세요.
1. 초기화부에서 변수 i 를 0 으로 선언.
2. 조건부에서 i(0)는 10 보다 작으므로(조건 참) 순환부 순회.
3. 순회표현식에서 i 를 1 증가.
4. 조건부에서 i(1)는 10 보다 작으므로(조건 참) 순환부 순회.
5 ... 19
20. 조건부에서 i(9)는 10 보다 작으므로(조건 참) 순환부 순회.
21. 순회표현식에서 i 를 1증가.
22. 조건부에서 i(10)는 10보다 작지 않으므로(조건 거짓) 종료.
위와 같이 i 가 10이 되는 시점에 조건부에서 거짓이 판명나고, for문을 빠져나오게 됩니다.
break
코드 B1
1
|
for ( var i = 0; i < 10; i++) { if (i == 5) { // i 가 5 와 같을 경우 break; // for 문 종료 } console.log(i); // 0,1,2,3,4 } |
위 [코드 B1] 과 같이 break 문은 반복문을 종료시키는 용도로 사용합니다.
코드 B2
1
|
for ( var i = 0; i < 10; i++) { if (i < 5) { // i 가 5 보다 작을 경우 console.log(i); // 0,1,2,3,4 } } |
그럼 [코드 B1] 과 [코드 B2] 의 차이점은 무엇일까요?
console.log 로 출력하는 값은 같지만,
[코드 B1] 은 순회를 6번, [코드 B2] 는 순회를 10번 하게 됩니다.
순회하는 코드의 횟수가 많아질수록 처리하는 연산도 많아진다는 얘기가 되는건 당연하겠지요.
보통 코드를 작성하다보면 코드의 양의 많아지고 처리해야할 일은 점점 늘어나게 되는데,
이런 사소한 차이가 성능에 문제를 줄 수 있습니다.
continue
코드 C1
1
|
for ( var i = 0; i < 10; i++) { if (i == 5) { // i 가 5 와 같을 경우 continue; // 다시 순회표현식으로 이동 } console.log(i); // 0,1,2,3,4,6,7,8,9 } |
continue 문은 현재의 순환부를 종료하고 다시 순회표현식으로 이동합니다.
위 [코드 C1] 처럼 순환부를 계속 반복하다가, 조건에 의해 continue 문을 만나게 되는 경우
해당 순환부를 종료해 버리기 때문에 continue 문 이하 문장을
실행하지 않아 '5' 가 출력되지 않았습니다.
(javascript 의 break, continue 문은 label 이라 불리우는것과도 연결이 가능합니다만, 사용을 권장하는 방법이 아니기 때문에 따로 설명은 넣지 않았습니다. 궁금하신분은 해당 키워드 또는 goto문 을 검색해 보세요.)
2015/02/23 - [IT/Javascript] - [javascript] 조건문 - if, ifelse 간단한 샘플 코드 및 작성 방식
'IT > Javascript' 카테고리의 다른 글
[javascript] 조건문 - if, ifelse 간단한 샘플 코드 및 작성 방식 (0) | 2015.02.23 |
---|