조건 분기는 코드 흐름 컨트롤의 핵심
`if ~ else if ~ else`와 `switch`의 차이, 주의점을 정리함
1. `if 문`
let num = 10;
if (num >= 3) {
console.log("num은 3 이상입니다.");
} else if (num >= 5) {
console.log("num은 5 이상입니다.");
} else if (num >= 10) {
console.log("num은 10 이상입니다.");
} else {
console.log("해당 사항이 없습니다");
}
- 위에서부터 첫 번째로 참인 분기만 실행되고 나머지는 스킵됨.
- 조건 순서 중요 : 범위가 넓은 조건을 먼저 쓰면 아래 분기가 절대 실행 안됨.
- 블록 `{ }` 생략 가능하지만 버그 방지용으로 항상 쓰는 것을 권장
truthy / falsy 체크도 자주 씀
// falsy: false, 0, "", null, undefined, NaN
const title = "";
if (!title) {
console.log("제목이 비어있음"); // 빈 문자열도 falsy
}
`Guard`패턴 : 초기에 빨리 리턴
function buy(price) {
if (price <= 0) return; // 잘못된 입력 가드
// 정상 로직
}
2. `switch` 문
let animal = "bear";
switch (animal) {
case "cat": {
console.log("고양이");
break; // ⚠️ break 없으면 아래로 '떨어짐'(fall-through)
}
case "dog": {
console.log("강아지");
break;
}
case "bear": {
console.log("곰");
break;
}
case "snake": {
console.log("뱀");
break;
}
default: {
console.log("그런 동물은 없습니다");
}
}
- `switch`는 엄격 동등 비교(===) 로 케이스 매칭함
->`"1"`과 `1`은 다름 - `break`없으면 fall-through 발생! (아래 case까지 연쇄 실행)
-> 일부러 묶고 싶을 땐 의도적으로 생략 - `defalut`는 선택적. 보통 맨 마지막에 둠
여러 케이스를 하나로 묶기
const key = "y";
switch (key) {
case "y":
case "Y":
console.log("Yes");
break;
case "n":
case "N":
console.log("No");
break;
default:
console.log("Unknown");
}
범위 조건은 `switch(true)` 트릭
const score = 87;
switch (true) {
case score >= 90:
console.log("A");
break;
case score >= 80:
console.log("B");
break;
case score >= 70:
console.log("C");
break;
default:
console.log("D");
}
case 안에서 변수 선언시 스코프 주의
- `switch`는 전체가 하나의 스코프라 중복 선언 에러가 생길 수 있음
-> 중괄호로 감싸서 블록 스코프 생성 권장
switch (animal) {
case "cat": {
const sound = "야옹";
console.log(sound);
break;
}
case "dog": {
const sound = "멍멍"; // 별도 블록이라 중복 선언 문제 없음
console.log(sound);
break;
}
}
3. `if` vs `switch`, 언제 씀?
| 상황 | 추천 |
| 범위/부등식 (>=, <= 등) | `if` |
| 값 일치 다수 분기 (문자/상수 매칭) | `switch` |
| 간단한 2분기 | 삼항(조건 ? A : B) 또는 `if` |
| 초기 검증/빠른 종료 | `if` 가드 패턴 |
가독성 기준으로 선택하면 될듯?
4. 샘플 코드
// 1) if: 순서가 중요한 범위 분기
const num = 10;
if (num >= 5) {
console.log("5 이상");
} else if (num >= 10) {
console.log("10 이상");
} else {
console.log("기타");
}
// 2) switch: 값 일치 분기
const animal = "bear";
switch (animal) {
case "cat": console.log("고양이"); break;
case "dog": console.log("강아지"); break;
case "bear": console.log("곰"); break;
default: console.log("없음");
}
// 3) switch(true): 점수 등급
const score = 87;
switch (true) {
case score >= 90: console.log("A"); break;
case score >= 80: console.log("B"); break;
case score >= 70: console.log("C"); break;
default: console.log("D");
}
// 4) truthy/falsy 체크
const title = "";
if (!title) console.log("제목 비어있음");
// 5) 가드 패턴
function pay(amount) {
if (amount <= 0) return; // 가드
console.log("결제 진행");
}
'React > JavaScript 기본' 카테고리의 다른 글
| [JavaScript 기본] 함수 정리 (0) | 2025.10.29 |
|---|---|
| [JavaScript 기본] 반복문 (0) | 2025.10.29 |
| [JavaScript 기본] 연산자 정리 (0) | 2025.10.29 |
| [JavaScript 기본] 형 변환 (Type Casting) 정리 (0) | 2025.10.28 |
| [JavaScript 기본] 자료형(원시 타입) 정리 (0) | 2025.10.28 |