Modern JavaScript Deep Dive 8장

younghyun·2022년 5월 13일
0

제어문

조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용
코드 실행 흐름을 인위적으로 제어

블록문

0개 이상의 문을 중괄호로 묶은 것. 코드 블록 또는 블록이라고 부름. 자바스크립트는 블록문을 하나의 실행 단위로 취급. 단독, 제어문, 함수 정의할 때 사용. 자체 종결성 가짐.

조건문

주어진 조건식 평가 결과에 따라 코드 블록(블록문)의 실행을 결정. 불리언 값으로 평가될 수 있는 표현식.

  • if...else문
    주어진 조건식(불리언 값으로 평가될 수 있는 표현식)의 평가 결과가 true일 경우 if문의 코드 블록 실행
    false일 경우 else문의 코드 블록 실행. else if문과 else문은 옵션. 코드 블록 내 문이 하나면 중괄호 생략 가능
if(조건식1) {
	// 조건식1이 참이면 이 코드 블록 실행
} else if(조건식2) {
	// 조건식2가 참이면 이 코드 블록 실행
} else {
	// 조건식1과 조건식2가 모두 거짓이면 이 코드 블록 실행
}
  • switch문
    주어진 표현식 평가해 그 값과 일치하는 표현식을 갖는 case문으로 실행흐름 옮김.
    case문은 상황을 의미하는 표현식을 지정하고 콜론(;)으로 마침. 그 뒤에 실행할 문들을 위치.
    swith문의 표현식과 일치하는 case문이 없다면 default문(선택사항)으로 이동

    fall throuth(폴스루) : switch문이 끌날 때 까지 이후 모든 case문과 default문을 실행
switch(표현식){
	case 표현식1:
    	switch 문의 표현식과 표현식1이 일치하면 실행될 문;
        break;
    case 표현식2:
    	switch 문의 표현식과 표현식2가 일치하면 실행될 문;
        break;
    case 표현식3:
    	switch 문의 표현식과 일치하는 case문이 없을 때 실행될 문;
}

반복문

조건식을 평가해서 참일 경우 코드 블록 실행. 조건식이 거짓일 때 까지 반복.

  • for문
    조건식이 거짓으로 평가될 때 까지 코드 블록 반복 실행
    실행 순서 : 변서 선언문 또는 할당문 -> 조건식 -> 반복 실행될 문 -> 증감식 -> 조건식 -> 반복 실행될 문 -> 증감식 -> ...
for (변수 선언문 또는 할당문; 조건식; 증감식) {
	조건식이 참인 경우 반복 실행될 문;
}

// 무한루프
for(;;) {...}
  • while문
    조건식 평가 결과가 참이면 코드 블록 반복 실행. 평가 결과가 불리언 값이 아니면 불리언 값으로 강제 변환.
var count = 0;

// count가 3보다 작을 때까지 코드 블록 계속 반복 실행.
while (count < 3) {
	console.log(count);
    count++;
}

// 무한루프
while (ture) { ... }

var count = 0;
// 무한루프
while (true) {
	console.log(count);
    count++;
    // count가 3이면 코드 블록 탈출.
    if (count === 3) break;
} // 0 1 2
  • do while문
    코드 블록 먼저 실행하고 조건식 평가. 코드 블록 무조건 1번 이상 실행
var count = 0;

// count가 3보다 작을 때 까지 코드 블록 계속 반복 실행.
do {
    console.log(count); // 0 1 2
    count++;
} while (count < 3);

break문

레이블 문(식별자가 붙은 문), 반복문(for, for..in, for..of, while, do..while) 또는 switch문의 코드 블록 탈출.
그 이외에 break문 사용하면 SyntaxError(문법 에러)발생

if (true) {
	break; Uncaught SyntaxError : Illegal break statement
}

foo: {
	console.log(1);
    break foo; // foo 레이블 블록문을 탈출.
    console.log(2);
}

중첩된 for문 내부 for문에서 break문을 실행하면 내부 for문 탈출해 외부 for문으로 진입. 이때 내부 for문이 아닌 외부 for문을 탈출하려면 레이블 문을 사용
outer: for (var i = 0; i < 3; i++) {
	for (var j = 0; j < 3; j++) {
  		// i + j === 3이면 outer라는 식별자가 붙은 레이블 for문 탈출.
        if (i + j === 3) break outer;
        console.log(`inner [${i}, ${j}]`);
  }
}

console.log('Done!');

continue 문

코드 블록 실행을 현 지점 에서 중단하고 반복문 증감식으로 실행흐름 이동. break 문처럼 반복문 탈출하지 않음.

profile
선명한 기억보다 흐릿한 메모

0개의 댓글