모던 자바스크립트 Deep Dive - 08장 제어문

송히·2023년 10월 8일
0
post-thumbnail

08 제어문

조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용
일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행 -> 코드의 실행 흐름을 인위적으로 제어 가능

8.1 블록문

0개 이상의 문을 중괄호로 묶은 것 => 코드 / 블록
자바스크립트는 블록문을 하나의 실행 단위로 취급 -> 일반적으로 제어문이나 함수를 정의 할 때 사용
블록문은 자체 종결성 가짐 -> 블록문의 끝에는 세미콜론 X

8.2 조건문

주어진 조건식의 평가 결과에 따라 코드 블록(블록문)의 실행 결정 -> 불리언 값으로 평가 가능

8.2.1 if...else문

  • 논리적 참 또는 거짓에 따라 실행할 코드 블록을 결정
  • else if 문과 else 문은 옵션, else if 문은 여러 번 사용 가능
  • 대부분의 if... else 문은 삼항 조건 연산자로 바꿔쓸 수 있음
    -> 값을 결정하여 변수에 할당하는 경우: 삼항 조건 연산자 /
    조건에 따라 실행할 내용이 복잡함: if... else문
if (조건식) {
	// 조건식1이 참이면 실행
}
else if (조건식2) {
	// 조건식2가 참이면 실행
}
else {
	// 조건식들 거짓이면 실행
}

8.2.2 switch문

  • 주어진 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행
  • switch 문의 표현식은 불리언 값보다는 문자열 또는 숫자 값인 경우 많음 -> 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용
switch(표현식) {
	case 표현식1:
    	표현식 == 표현식1 이면 실행됨;
        break;
	case 표현식2:
    	표현식 == 표현식2 이면 실행됨;
        break;
	default:
    	표현식과 일치하는 case문 없으면 실행됨;
        break;
}
  • 폴스루(fall through): switch문을 탈출하지 않고 switch문이 끝날때가지 모든 case와 default를 실행
    -> 의도에 맞게 사용하기 위해서는 break를 잊지 말아야함 (default 문에는 break 문을 생략하는 것이 일반적)

8.3 반복문

조건식의 평가 결과가 참인 경우 코드 블록 -> 조건식이 거짓일 때까지 반복함

8.3.1 for문

  • 조건식이 거짓으로 평가될 때까지 코드 블록 반복 실행
  • for 문의 변수 선언문, 조건식, 증감식은 모두 옵션 -> 반드시 사용할 필요 X(아무 것도 안 쓰면 무한루프 됨)
  • for 문 내에 for 문 중첩 사용 가능
for (변수 선언문; 조건식; 증감식) {
	// 조건이 참이면 반복 실행;
}

8.3.2 while문

  • 주어진 조건식의 결과가 참이면 코드 블록 반복 실행 -> 결과가 불리언 값 아니면, 불리언 값으로 강제 변환하여 참, 거짓 구별
    (for문은 반복 횟수가 명확할 때 사용 / while문은 반복 횟수가 불명확할 때 사용)
  • 조건식의 결과가 언제나 참이면 무한루프 -> 탈출 방법은 코드 블록 안에 if문 탈출조건 & break; 생성
while (조건식) {
  	// 조건이 참이면 반복 실행;
}

8.3.3 do while문

  • 코드 블록을 먼저 실행하고 조건식을 평가 -> 코드 블록은 무조건 한 번 이상 실행됨
do {
	무조건 실행
} while (조건식) {
  조건에 맞춰 실행
}

8.4 break문

코드 블록을 탈출 -> 레이블문, 반복문, switch문 코드블록 외에서 사용시 SyntaxError(문법 에러)가 발생

break;

레이블 문(label statement): 식별자가 붙은 문, 프로그램의 실행 순서를 제어하는 데 사용
-> 탈출하려면 break 문에 레이블 식별자를 지정

  • 중첩된 for 문 외부로 탈출할 때 외에는 일반적으로 권장하지 않음
    -> 가독성 나빠지고 복잡성 증가해 오류 발생 가능성 높아짐
foo : { 
	console.log(1);
    break foo; //foo 레이블문 탈출
    console.log(2);
}
console.log("Done");

8.5 continue

  • 반복문의 코드 블록 실행을 현 지점에서 중단 -> 반복문의 증감식으로 실행 흐름을 이동시킴 (탈출 X)
  • if 문 내에서 실행해야 할 코드가 길 때 사용하면 가독성 올라감
continue;
profile
데브코스 프론트엔드 5기

0개의 댓글