- **반복문(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
// 1break는 레이블과 함께 사용되면label문을 탈출하기 위해 사용한다.
/* 레이블문을 빠져나오기 위해 break 사용 */
myLoop: for (let i = 0; i < 10; i++){
if (i == 2)
break myLoop;
console.log(i);
}
// 0
// 1continue문은 반복문에서 실행 흐름을 조건식으로 이동하기 위해 사용한다.
continue; // 단독 사용
continue 레이블; // 레이블과 사용continue문은 단독으로 사용되면 반복문에서 실행 흐름을 조건식으로 이동하기 위해 사용한다.
/* continue 단독 사용 */
for (let i = 0; i < 5; i++){
if (i == 2)
continue;
console.log(i);
}
// 0
// 1
// 3
// 4continue문은 레이블과 함께 사용하면label문을 다시 시작하기 위해 사용한다.
/* 레이블문을 다시 시작하기 위해 continue 사용 */
myLoop: for (let i = 0; i < 5; i++){
if (i == 2)
continue myLoop;
console.log(i);
}
// 0
// 1
// 3
// 4