728x90
SMALL
1. Truthy & Falsy (참 같은 값, 거짓 같은 값)
자바스크립트는 불리언(true, false) 타입이 아니더라도, 조건문 내에서 참이나 거짓으로 평가되는 고유한 규칙이 있다.
① Falsy (거짓 같은 값)
아래의 값들은 조건문에서 false로 인식된다. 딱 7가지만 기억해보자
- undefined
- null
- 0 (숫자 0)
- -0
- 0n (BigInt)
- "" (빈 문자열)
- NaN (Not a Number)
② Truthy (참 같은 값)
위의 Falsy 값들을 제외한 나머지 모든 값은 true로 평가된다.
- "0" (내용이 있는 문자열)
- [] (빈 배열)
- {} (빈 객체)
- Infinity (무한대)
JavaScript
// Truthy & Falsy 확인 예제
function check(value) {
if (value) {
console.log(`${value} -> [Truthy] 참입니다.`);
} else {
console.log(`${value} -> [Falsy] 거짓입니다.`);
}
}
check(null); // Falsy
check(0); // Falsy
check("SinYoung"); // Truthy
check([]); // Truthy (빈 배열도 참!)
2. 단락 평가 (Short-circuit Evaluation)
논리 연산자(&&, ||)의 특성을 이용해 조건문을 짧게 줄이는 기술이다. 불필요한 연산을 생략한다고 해서 '단락(Short-circuit)' 평가라고 부른다.
① && (AND) 연산자
- 앞의 값이 Falsy이면 즉시 그 값을 반환하고 종료한다.
- 앞의 값이 Truthy이면 뒤의 값을 확인(반환)한다.
JavaScript
// 예: 데이터가 있을 때만 실행하기
function getName(person) {
return person && person.name; // person이 null이면 null 반환, 있으면 name 반환
}
console.log(getName({ name: "Dexta" })); // "Dexta"
console.log(getName(null)); // null (에러 방지!)
② || (OR) 연산자
- 앞의 값이 Truthy이면 즉시 그 값을 반환하고 종료한다.
- 앞의 값이 Falsy이면 뒤의 값을 확인(반환)한다.
JavaScript
// 예: 기본값 설정하기
function getNickname(nick) {
return nick || "익명 사용자";
}
console.log(getNickname("Muscle")); // "Muscle"
console.log(getNickname("")); // "익명 사용자" (빈 문자열은 Falsy이므로)
3. 실전 응용: 복합 조건 처리
현대 자바스크립트에서는 if문을 남발하기보다 단락 평가를 섞어 쓰는 것이 관례이다.
JavaScript
// [심화 예제: 사용자 권한 체크 시스템]
const user = {
isLoggedIn: true,
profile: {
nickname: "SinYoung",
level: 0 // 0은 Falsy임을 주의!
}
};
// 1. 단락 평가를 활용한 안전한 접근
const userName = user.isLoggedIn && user.profile.nickname;
console.log(`접속 유저: ${userName}`); // SinYoung
// 2. ?? (Null 병합) vs || (OR) 차이 복습
// 만약 level이 0인 경우, ||를 쓰면 'Guest'가 되어버릴 수 있음
const userLevel = user.profile.level ?? "Level 미정";
console.log(`유저 레벨: ${userLevel}`); // 0 (정확하게 출력)
// 3. Truthy/Falsy를 활용한 객체 존재 확인
function printProfile(user) {
if (!user) {
console.log("유저 정보가 없습니다.");
return;
}
console.log(`${user.profile.nickname}님의 프로필을 출력합니다.`);
}
printProfile(null); // 안전하게 가드(Guard) 처리됨
📝 07편 요약 및 마무리
- Truthy/Falsy: null, undefined, 0, "" 등은 조건문에서 false로 취급된다는 것을 기억하자.
- 단락 평가: &&는 첫 번째 Falsy를, ||는 첫 번째 Truthy를 찾는 여정이다.
- 안전성: 단락 평가를 사용하면 객체가 null이거나 undefined일 때 발생하는 참조 에러(Reference Error)를 아주 우아하게 막을 수 있다.
728x90
'JavaScript' 카테고리의 다른 글
| [JS] 10. 데이터의 깊이: 원시 타입 VS 객체 타입 & 순회 (1) | 2026.05.24 |
|---|---|
| [JS] 09. 현대 JS: 구조분해할당, Spread & Rest (0) | 2026.05.22 |
| [JS] 07. 데이터 마스터: 객체와 배열 심화 (Feat. ES6+) (0) | 2026.04.15 |
| [JS] 06. 변수가 사는 세상, 스코프(Scope)와 호이스팅 (0) | 2026.03.31 |
| [JS] 05. 자바스크립트의 심장, 함수(Function) (0) | 2026.03.22 |