모던 자바스크립트 Deep Dive - 8. 제어문

둡둡·2024년 1월 1일

8. 제어문

  • 조건에 따라 코드 블록을 실행하거나(조건문) 반복 실행(반복문) 할 때 사용

8.1. 블록문

  • 블록문은 0개 이상의 문을 중괄호로 묶음, 코드 블록 또는 블록이라고도 함
  • 블록문을 하나의 실행 단위로 취급
  • 일반적으로 제어문이나 함수를 정의할 때 사용함
  • 자체 종결성을 갖기 때문에 세미콜론 생략

8.2. 조건문

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

8.2.1. if ... else 문

  • 주어신 조건식의 평과 결과에 따라 true인 경우 if 문의 코드 블록이 실행, false인 경우 else 문의 코드 블록이 실행됨
  • 조건에 따라 실행될 코드 블록을 추가하려면 else if 문 사용
  • else if, else 는 옵션으로 사용하지 않아도 됨

8.2.2. switch 문

  • 주어신 표현식을 평가하여 일치하는 case 문으로 실행 흐름을 옮김
  • switch 문의 표현식과 일치하는 case 문이 없다면 default 문으로 이동
  • 불리언보다는 문자나 숫자 값 일치 여부인 경우가 대부분
  • 폴스루(fall through): break 문이 없는 경우 다음 case 문이 연속으로 실행됨
    • default는 가장 마지막에 위치하기 때문에 break 생략 가능

8.3. 반복문

  • 조건문의 평가 결과가 거짓일 때까지 참인 동안 코드 블록을 반복하여 실행함
  • for 문, while 문, do ... while 문
    • 배열 객체에서 사용 가능한 forEach, for ... in, for ... of 문 등

8.3.1. for 문

  • for 문은 거짓으로 평가될 때까지 코드 블록을 반복 실행
  • for (변수 선언문 또는 할당문; 조건식; 증감식) { 반복 실행될 문 }
  • for (;;) { ... } : 무한 루프
  • 중첩 for 문도 가능

8.3.2. while 문

  • 참이면 코드 블록을 반복 실행
  • for 문은 반복 횟수가 명확할 때, while 문은 불명확할 때 주로 사용

8.3.3. do ... while 문

  • 코드 블록을 먼저 실행 후 조건식 평가
    • 코드 블록은 무조건 한 번 이상 실행됨

8.4. break 문

  • 레이블 문, 반복문, switch 문에서 코드 블록을 탈출할 때 사용
    • 레이블 문: 레이블 식별자가 붙은 문
    • 중첩 for 문에서 탈출할 때 사용 등
    foo: {
      console.log(1);
      break foo; // 해당 레이블 문을 탈출함
      console.log(2); // 실행되지 않음
    }

8.5. confinue 문

  • 반복문의 실행 흐름에서 현 지점을 건너 뛰고 계속 실행함 (탈출하지 않음)
for (var i = 0; i < string.length; i++) {
  // '1'이 아니면 현 지점에서 실행을 중단하고 반복문의 증감식으로 이동한다.
  if (string[i] !== search) continue;
  count++; // continue문이 실행되면 이 문은 실행되지 않는다. 
}

[출처] 모던 자바스크립트, Deep Dive

profile
괴발개발라이프

0개의 댓글