← 글 목록

notes

08장. 제어문

모던 JS Deep Dive — 조건문·반복문과 제어 흐름 핵심 정리.

참고: 이웅모 《모던 자바스크립트 Deep Dive》 08장 · [MDN Control flow](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling)

위에서 아래로만 흐르면 프로그램이 안 된다. 조건·반복·탈출이 흐름을 꺾는다. 이 장은 블록, if/switch, for/while, break/continue.

flowchart TD
  S[시작] --> IF{조건}
  IF -->|yes| A[블록 A]
  IF -->|no| B[블록 B]
  A --> LOOP[반복]
  B --> LOOP
  LOOP --> OUT[이후]

8.1 블록문

{ ... } — 여러 문을 하나로. let/const 스코프(15).

8.2 조건문

if…else

if (score >= 90) grade = 'A';
else if (score >= 80) grade = 'B';
else grade = 'C';

switch

=== 비교. break 필수(fall-through 의도 아니면).

switch (grade) {
  case 'A':
  case 'B':
    console.log('pass');
    break;
  default:
    console.log('fail');
}

8.3 반복문

for

초기식; 조건; 증감.

while / do…while

조건 선행 vs 최소 1회.

for (let i = 0; i < 3; i++) console.log(i);
let n = 3;
while (n--) console.log(n);

8.4 break

루프·switch 탈출. 레이블 가능(남용 비추).

8.5 continue

이번 반복 나머지 건너뛰기.

for (let i = 0; i < 5; i++) {
  if (i % 2 === 0) continue;
  console.log(i);
}

예제

function sumTo(n) {
  let s = 0;
  for (let i = 1; i <= n; i++) s += i;
  return s;
}

function findFirstEven(arr) {
  for (const x of arr) {
    if (x % 2 === 0) return x;
  }
  return null;
}

헷갈리던 장면 / 함정

  • switch fall-through
  • for 무한 루프 조건
  • var 루프+클로저(24)
  • for…in으로 배열 순회(비추)

표

질문 → 자답

Q. 삼항 vs if? A. 값 선택이 짧으면 삼항, 문·부수효과면 if.

Q. forEach에서 break? A. 불가에 가깝다. for…of 사용.

웹 보강 메모

MDN loops and iteration. ESLint no-fallthrough.

실무로 바로

  • 조기 return으로 중첩 감소
  • 배열은 map/filter/for…of
  • switch에 default

여기서 잠깐 💁‍♂️

9장 타입 변환 — 조건식 truthy/falsy와 직결.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.

연습·복습 체크리스트

  • [ ] 이 장 핵심 표를 백지에 다시 그리기
  • [ ] 함정 예제를 콘솔에서 재현
  • [ ] MDN 관련 페이지 북마크
  • [ ] 실무 코드에서 같은 패턴 검색·리팩터 후보 표시
  • [ ] 앞뒤 장과 한 줄로 연결해 보기

일기 보강

처음엔 용어가 추상적으로 들렸다. 책을 덮고 한 줄 정의를 내 말로 다시 쓰고, 예제를 최소 세 개 쳐 보니 문제 유형이 보이기 시작했다. “외운 문장”이 아니라 “다시 설명 가능한 문장”이 남을 때까지 표를 줄였다 늘렸다. 원문 복붙 없이 왜 이렇게 동작하나만 남겼다.

웹·스펙 메모

MDN과 스펙 용어가 다를 수 있다. 노트에는 디버깅에 쓰는 말을 우선 적고, 면접용 키워드를 괄호로 병기한다. 팀 컨벤션이 없으면 이 장 표를 초안으로 제안한다.

실무 적용

PR 리뷰에 이 장 키워드가 보이면 체크리스트를 붙인다. 버그 리포트에는 재현 코드와 기대/실제를 한 쌍으로 적는다.