Skip to content

Latest commit

 

History

History
282 lines (202 loc) · 5.25 KB

10. Loop and Iteration.md

File metadata and controls

282 lines (202 loc) · 5.25 KB

10. Loop and Iteration

10.1 반복문

  • **반복문(loop statement)**은 조건식이 참으로 평가되는 동안 코드 블록을 실행한다.
  • 자바스크립트의 반복문은 다음과 같은 종류가 있다.
    • for
    • while
    • do...while
    • for...in
    • for...of

10.1.1 for 문

for문은 대개 정해진 횟수만큼 코드 블록을 실행하기 위해 사용한다.

for (초기식; 조건식; 증감식) {
    ;
}
  • 이 한 개 라면 {}를 생략할 수 있다.
  • 제어 변수(control variable): 반복 실행을 제어하는 데 사용한다.
  • 초기식: 제어 변수를 초기화한다.
  • 증감식: 제어 변수의 값을 수정한다.
  • 조건식: boolean 값으로 평가될 수 있는 표현식이다. 보통 제어 변수의 값을 검사한다.
  • : 루프 몸체(loop body), 조건식이 참으로 평가되는 동안 반복 실행된다.
for (let i = 0; i < 3; i++) {
	console.log(`${i + 1}번째 반복`);
}
// 1번째 반복
// 2번째 반복
// 3번째 반복

10.1.2 while 문

while문은 반복 횟수가 정해져 있지 않고 조건식이 참으로 평가될 때까지 코드 블록을 반복하여 실행하고 싶을 때 사용한다.

while (조건식) {
    ;
}
  • 코드 블록에 있는 이 한 개 라면 {}를 생략할 수 있다.
  • 조건식이 참으로 평가되는 동안 코드 블록을 되풀이한다.
let i = 0;

while ( i < 3 ) {
    console.log(`${i + 1}번째 반복`);
    i++;
}
// 1번째 반복
// 2번째 반복
// 3번째 반복

10.1.3 do...while 문

do...while문은 코드 블록을 일단 한 번 실행한 후 조건식을 평가한다.

do {
    문;
} while (조건식);
  • 코드 블록에 있는 이 한 개 라면 {}를 생략할 수 있다.
  • 일단 을 실행한 후, 조건식이 참인 동안 을 되풀이한다.
let i = 0;

do {
    console.log(`${i + 1}번째 반복`);
    i++;
} while ( i < 3 );
// 1번째 반복
// 2번째 반복
// 3번째 반복

10.1.4 for... in 문

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

객체의 프로퍼티를 순회할 수 있다.

10.1.5 for...of 문

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

객체의 프로퍼티 값을 순회할 수 있다.

10.2 분기문

  • **분기문(jump statement)**는 지정된 곳으로 프로그램의 제어를 옮기게 한다.
  • 자바스크립트의 분기문은 다음과 같은 종류가 있다.
    • label
    • break
    • continue

10.2.1 label 문

label문은 식별자가 붙은 문이다.

레이블:
;
  • 레이블을 식별한다.
foo: console.log('foo');

10.2.2 break 문

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

10.2.3 continue 문

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