제어 흐름 — if · for · while · switch
제어 흐름 — if · for · while · switch
🎯 이 lesson 을 읽고 나면
이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.
- ▸✅ if-else · switch · 삼항 중 언제 무엇 을 쓸지
- ▸✅ ?? (nullish) vs || (falsy) 의 결정적 차이
- ▸✅ for · for-of · for-in · forEach 의 await 호환성
학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.
if / else / 삼항 — *분기* 의 3가지 표현
가장 기본 if
조건은 truthy/falsy 로 평가됩니다. 0, '', null, undefined, NaN, false 가 falsy. 그 외는 모두 truthy.
삼항 연산자 — 짧은 if 의 표현
값을 반환하는 if. React JSX 안에서 매우 자주:
3중 삼항 (a ? b : c ? d : e) 은 가독성 떨어지니 자제. if-else 로 풀어쓰세요.
옵셔널 체이닝 + Nullish coalescing — 분기의 단축형
?. — 앞이 null/undefined 면 즉시 undefined 반환 (TypeError 회피).?? — 왼쪽이 null/undefined 일 때만 오른쪽 사용. 0 이나 '' 는 그대로 사용.
|| 와의 차이가 바이브 코딩의 단골 함정. AI 생성 코드의 80% 가 ?? 를 씁니다.
반복문 4종 — for · while · for...of · for...in
고전 for
인덱스를 직접 다뤄야 할 때 (역순 순회·건너뛰기) 유용.
while / do-while
조건이 동적 일 때 (입력 대기·재시도 루프). 일반 반복은 for-of 가 낫습니다.
for...of — 값 을 순회 (배열)
가장 자주 쓰는 배열 순회. break·continue 사용 가능 (forEach 와의 결정적 차이).
for...in — 키 를 순회 (객체)
주의: 배열에 for...in 쓰면 인덱스가 문자열 로 나오고 상속 프로퍼티까지 포함될 수 있음 — 배열은 for...of, 객체는 for...in (또는 Object.entries).
break · continue
forEach 와 for...of 의 차이 — 바이브 코딩 단골 질문
규칙: await 또는 break 가 필요하면 for...of, 단순 변환이면 map/filter/reduce (forEach 는 줄어드는 추세).
switch — case 폴스루 함정
기본 switch
폴스루 (fall-through) 함정
day === 'MON' 입력 시 "월요일" + "화요일" 둘 다 출력. break 누락이 버그의 원인 1위.
의도적 폴스루 — 여러 case 묶기
객체 리터럴로 대체 — 더 현대적
if-else 또는 switch 가 길어지면 객체 매핑 이 깔끔:
JSX·React 컴포넌트 분기에서 자주 쓰는 패턴.
🤖 AI 에게 이렇게 요청해보세요
- ▸"이 if-else 체인을 switch 로 바꿔줘"
- ▸"이 switch 의 break 누락 가능성을 검사해줘"
- ▸"이 분기를 객체 매핑으로 리팩토링해줘"
제어문을 알면 AI 에게 흐름 변형을 정확히 지시 할 수 있고, AI 가 생성한 코드의 버그를 잡아낼 수 있습니다.