조건문의 판정을 더욱 정교하게 만들어주는 Truthy(참 같은 값)와 Falsy(거짓 같은 값) 개념에 대해 알아보겠습니다.
자바스크립트는 if 문의 괄호 안에 불리언(true, false)이 아닌 값이 들어오더라도, 이를 고유의 규칙에 따라 참이나 거짓으로 변환하여 인식합니다.
1. Falsy (거짓 같은 값)
자바스크립트에서 거짓(false)으로 취급되는 값은 딱 8가지뿐입니다. 이 외의 모든 값은 전부 참으로 간주됩니다.
- false: 불리언 거짓
- 0: 숫자 0
- -0: 음수 0
- 0n: BigInt 0
- "": 빈 문자열 (공백이 없는 상태)
- null: 값이 없음
- undefined: 할당되지 않음
- NaN: 숫자가 아님 (Not a Number)
2. Truthy (참 같은 값)
위에서 언급한 8가지 Falsy 값을 제외한 나머지 모든 값은 true로 취급됩니다. 우리가 흔히 착각하기 쉬운 '참'의 사례들은 다음과 같습니다.
- "0": 문자열 "0"은 비어있지 않으므로 참입니다.
- "false": 문자열 "false"도 내용이 있으므로 참입니다.
- []: 빈 배열은 객체이므로 참입니다.
- {}: 빈 객체도 객체이므로 참입니다.
- 1, -100: 0이 아닌 모든 숫자는 참입니다.
🖥️ 실전 예제 코드: "값의 존재 유무 확인"
이 개념을 활용하면 코드를 매우 짧게 줄일 수 있습니다.
JavaScript
// 1. 문자열이 비어있는지 확인
let userName = ""; // 빈 문자열 (Falsy)
if (userName) {
console.log("이름이 입력되었습니다.");
} else {
console.log("이름을 입력해주세요."); // 실행됨
}
// 2. 숫자가 0인지 확인
let cartCount = 0;
if (!cartCount) { // 0은 Falsy이므로 !0은 true가 됨
console.log("장바구니가 비어 있습니다."); // 실행됨
}
// 3. 데이터가 들어왔는지 확인 (null, undefined 체크)
let data = null;
if (data) {
console.log("데이터 수신 성공");
} else {
console.log("데이터가 없습니다."); // 실행됨
}
⚠️ 주의해야 할 점
Falsy 값을 정확히 모르면 의도치 않은 버그가 발생할 수 있습니다.
JavaScript
let score = 0;
// 사용자가 0점을 맞았는데 "점수가 없습니다"라고 출력되는 오류 발생 가능
if (!score) {
console.log("점수가 기록되지 않았습니다.");
}
따라서 숫자 0처럼 비어있는 상태가 아닌 '유효한 값'을 다룰 때는 if (score === 0)과 같이 엄격하게 비교하는 것이 안전합니다.
학습 정리
- 자바스크립트는 데이터의 존재 유무에 따라 참/거짓을 판별하는 유연한 언어이다.
- 0, "", null, **undefined**는 대표적인 Falsy 값이다.
- 비어있는 **배열 []이나 객체 {}**는 의외로 Truthy라는 점을 꼭 기억하자.
값의 진실 혹은 거짓을 판별하는 법까지 완벽하게 익히셨습니다!
'JavaScript' 카테고리의 다른 글
| -Null (0) | 2026.02.15 |
|---|---|
| Undefined (0) | 2026.02.15 |
| JS coding rule and style guide (0) | 2026.02.15 |
| JS I/0 (0) | 2026.02.15 |
| JavaScript basic (0) | 2026.02.15 |