- **반복문(loop statement)**은 조건식이 참으로 평가되는 동안 코드 블록을 실행한다.
- 자바스크립트의 반복문은 다음과 같은 종류가 있다.
for
문while
문do...while
문for...in
문for...of
문
for
문은 대개 정해진 횟수만큼 코드 블록을 실행하기 위해 사용한다.
for (초기식; 조건식; 증감식) {
문;
}
문
이 한 개 라면{}
를 생략할 수 있다.- 제어 변수(control variable): 반복 실행을 제어하는 데 사용한다.
초기식
: 제어 변수를 초기화한다.증감식
: 제어 변수의 값을 수정한다.조건식
:boolean
값으로 평가될 수 있는 표현식이다. 보통 제어 변수의 값을 검사한다.문
: 루프 몸체(loop body),조건식
이 참으로 평가되는 동안 반복 실행된다.
for (let i = 0; i < 3; i++) {
console.log(`${i + 1}번째 반복`);
}
// 1번째 반복
// 2번째 반복
// 3번째 반복
while
문은 반복 횟수가 정해져 있지 않고 조건식
이 참으로 평가될 때까지 코드 블록을 반복하여 실행하고 싶을 때 사용한다.
while (조건식) {
문;
}
- 코드 블록에 있는
문
이 한 개 라면{}
를 생략할 수 있다. 조건식
이 참으로 평가되는 동안 코드 블록을 되풀이한다.
let i = 0;
while ( i < 3 ) {
console.log(`${i + 1}번째 반복`);
i++;
}
// 1번째 반복
// 2번째 반복
// 3번째 반복
do...while
문은 코드 블록을 일단 한 번 실행한 후 조건식
을 평가한다.
do {
문;
} while (조건식);
- 코드 블록에 있는
문
이 한 개 라면{}
를 생략할 수 있다. - 일단
문
을 실행한 후,조건식
이 참인 동안문
을 되풀이한다.
let i = 0;
do {
console.log(`${i + 1}번째 반복`);
i++;
} while ( i < 3 );
// 1번째 반복
// 2번째 반복
// 3번째 반복
for... in
문은 객체
의 enumerable 프로퍼티를 순회한다.
for (변수 in 객체) {
문;
}
변수
는객체
의 프로퍼티를 나타낸다.
/* 배열 순회하기 */
let arr = [ 1, 2, 3 ];
for (let i in arr) {
console.log(`인덱스: ${i} 값: ${arr[i]}`)
}
// 인덱스: 0 값: 1
// 인덱스: 1 값: 2
// 인덱스: 2 값: 3
배열의 인덱스를 순회할 수 있다.
/* 객체 순회하기 */
let obj = { name: 'umi', age: 1 };
for (let key in obj) {
console.log(`키: ${key} 값: ${obj[key]}`);
}
// 키: name 값: umi
// 키: age 값: 1
객체의 프로퍼티를 순회할 수 있다.
for... of
문은 iterable 객체의 프로퍼티의 값을 순회한다.
for (변수 of 객체) {
문;
}
변수
는객체
의 프로퍼티의 값을 나타낸다.
/* 배열 순회하기 */
let arr = [ 1, 2, 3 ];
for (let i of arr) {
console.log(`값: ${i}`)
}
// 값: 1
// 값: 2
// 값: 3
배열의 요소를 순회할 수 있다.
/* 객체 순회하기 */
let obj = { name: 'umi', age: 1 };
for (let val in obj) {
console.log(`값: ${val}`);
}
// 값: umi
// 값: 1
객체의 프로퍼티 값을 순회할 수 있다.
- **분기문(jump statement)**는 지정된 곳으로 프로그램의 제어를 옮기게 한다.
- 자바스크립트의 분기문은 다음과 같은 종류가 있다.
label
문break
문continue
문
label
문은 식별자가 붙은 문이다.
레이블:
문;
레이블
은문
을 식별한다.
foo: console.log('foo');
break
문은 반복문, switch
문의 코드 블록과 label
문을 탈출하기 위해 사용한다.
break; // 단독 사용
break 레이블; // 레이블과 사용
break
문은 단독 사용되면 반복문과switch
문의 코드 블록 내에서 탈출하기 위해 사용한다.
/* break 단독 사용 */
for (let i = 0; i < 10; i++){
if (i == 2)
break;
console.log(i);
}
// 0
// 1
break
는 레이블과 함께 사용되면label
문을 탈출하기 위해 사용한다.
/* 레이블문을 빠져나오기 위해 break 사용 */
myLoop: for (let i = 0; i < 10; i++){
if (i == 2)
break myLoop;
console.log(i);
}
// 0
// 1
continue
문은 반복문에서 실행 흐름을 조건식으로 이동하기 위해 사용한다.
continue; // 단독 사용
continue 레이블; // 레이블과 사용
continue
문은 단독으로 사용되면 반복문에서 실행 흐름을 조건식으로 이동하기 위해 사용한다.
/* continue 단독 사용 */
for (let i = 0; i < 5; i++){
if (i == 2)
continue;
console.log(i);
}
// 0
// 1
// 3
// 4
continue
문은 레이블과 함께 사용하면label
문을 다시 시작하기 위해 사용한다.
/* 레이블문을 다시 시작하기 위해 continue 사용 */
myLoop: for (let i = 0; i < 5; i++){
if (i == 2)
continue myLoop;
console.log(i);
}
// 0
// 1
// 3
// 4