반응형
조건문은 프로그램의 흐름을 제어하는 핵심 요소입니다. JavaScript에서는 다양한 조건문과 표현식을 통해 유연하고 명확한 조건 처리를 할 수 있습니다. 이 글에서는 조건문의 심화 사용법과 실수하기 쉬운 부분들을 다룹니다.
1. if / else if / else 기본 구조
const score = 85;
if (score >= 90) {
console.log("A");
} else if (score >= 80) {
console.log("B");
} else {
console.log("C 이하");
}
- 조건은 위에서 아래로 평가되며, 가장 먼저 true가 되는 블록이 실행됩니다.
2. 삼항 연산자 (조건 ? 참 : 거짓)
const age = 18;
const status = age >= 18 ? "성인" : "미성년자";
- 간단한 조건 분기에는 if 대신 삼항 연산자를 사용하는 것이 가독성이 좋을 수 있습니다.
- 중첩된 삼항은 피하고 if로 대체하는 것이 낫습니다.
3. switch 문
const device = "mobile";
switch (device) {
case "desktop":
console.log("PC 화면");
break;
case "mobile":
console.log("모바일 화면");
break;
default:
console.log("알 수 없음");
}
- 다중 분기 조건이 동일한 변수일 경우 if보다 switch가 명확함
- break를 빼먹으면 fall-through가 발생하므로 주의
4. truthy / falsy 값의 이해
if ([]) console.log("배열은 truthy");
if ("") console.log("이 문자열은 실행되지 않음");
- falsy 값: false, 0, "", null, undefined, NaN
- 그 외는 대부분 truthy
if (value) 형태는 존재 유무, 유효성 검사에 널리 사용됨
5. 단축 평가 (Short-circuit Evaluation)
const username = input || "Guest";
const isLoggedIn = user && user.loggedIn;
- ||는 좌측이 falsy면 우측 반환
- &&는 좌측이 truthy면 우측 반환
→ 조건문 없이 기본값을 설정하거나 안전하게 접근할 때 사용 가능
6. 옵셔널 체이닝 (?.)과 널 병합 연산자 (??)
const name = user?.profile?.name;
const nickname = user.nickname ?? "익명";
- ?.는 객체가 undefined/null인 경우 오류 없이 undefined 반환
- ??는 좌측이 null/undefined일 때만 우측 반환 (||보다 명확함)
7. 조건식 안에서의 할당 실수
let value = 0;
if (value = 5) console.log("할당입니다"); // 버그 발생 가능
- ==, === 대신 =를 쓰는 실수는 매우 흔함
- 비교 연산자는 항상 두 개 이상의 등호 사용하기
8. 조건문의 함수화와 early return
function checkLogin(user) {
if (!user) return "로그인 필요";
if (!user.active) return "비활성 계정";
return "접속 허용";
}
- 중첩된 조건문을 줄이고 가독성을 높이기 위한 패턴
- if 블록보다는 조건별 빠른 종료(return)를 선호하는 흐름
마무리
조건문은 단순한 분기를 넘어서, 프로그램의 안정성과 가독성을 좌우하는 요소입니다. truthy/falsy 개념, 단축 평가, 옵셔널 체이닝 등 현대 JavaScript의 기능들을 적극 활용하여 더 깔끔하고 안정적인 조건 분기를 설계해보세요.
반응형
'Programing > javascript' 카테고리의 다른 글
JavaScript로 구현하는 금액의 영어 단위 변환 (Number to Words) (0) | 2025.05.27 |
---|---|
기수 정렬 (Radix Sort) 설명과 JavaScript 예제 (1) | 2025.05.22 |
힙 정렬 (Heap Sort) 설명과 JavaScript 예제 (0) | 2025.05.22 |
JavaScript 비교 연산자 (1) | 2025.05.18 |
JavaScript 반복문 (0) | 2025.05.18 |
함수 선언식과 함수 표현식의 차이 (2) | 2025.05.05 |
함정에 빠지기 쉬운 자바스크립트 문법12 (0) | 2025.05.05 |
함정에 빠지기 쉬운 자바스크립트 문법11 (1) | 2025.05.05 |