true와 false의 세계, JavaScript boolean
JavaScript의 세계에서 Boolean은 단순한 참(true)과 거짓(false) 이상의 의미를 지닙니다. 조건문, 반복문, 논리 연산자, 형변환 등 프로그램 흐름의 중심에 자리 잡고 있는 Boolean은 그 특성에 따라 예상치 못한 결과를 만들 수도 있습니다. 본 가이드는 Boolean의 본질과 작동 방식, 암묵적 형변환까지 깊이 있게 탐구하여, 보다 안전하고 명확한 JavaScript 코드를 작성하는 데 도움을 주기 위해 작성되었습니다.

목차
- Boolean이란 무엇인가?
- true와 false의 정체
- Truthy와 Falsy 개념
- 암묵적 형변환과 Boolean
- 논리 연산자와 Boolean
- Boolean 관련 흔한 실수
- Boolean 사용을 위한 모범 사례
1. Boolean이란 무엇인가?
JavaScript에서 Boolean은 true 또는 false 두 가지 값 중 하나만을 가지는 원시 데이터 타입입니다. 이는 조건 판단의 기반이 되는 타입으로, 다음과 같은 경우에 활용됩니다.
- 조건문
if / else - 반복문
while / for - 논리 연산자
&&,||,!
2. true와 false의 정체
JavaScript에서 Boolean은 객체로도 표현될 수 있지만, 대부분의 경우는 원시값으로 사용됩니다.
console.log(typeof true); // "boolean"
console.log(typeof false); // "boolean"
console.log(typeof new Boolean()); // "object"
주의: new Boolean(false)는 객체이기 때문에 if 조건문에서 true로 평가됩니다!
3. Truthy와 Falsy 개념
JavaScript에서는 Boolean이 아닌 값도 Boolean 문맥에서 자동으로 변환됩니다. 이때 변환 결과가 true이면 Truthy, false이면 Falsy라고 합니다.
| Falsy 값 | 설명 |
|---|---|
false |
불리언 false 자체 |
0, -0 |
숫자 0 |
"", '', `` |
빈 문자열 |
null, undefined |
정의되지 않은 값 |
NaN |
Not-a-Number |
4. 암묵적 형변환과 Boolean
JavaScript는 다양한 상황에서 값을 Boolean으로 암묵적으로 변환합니다. 대표적인 예는 조건문입니다.
if ("hello") {
console.log("문자열은 truthy!");
}
if (0) {
console.log("실행되지 않음"); // 0은 falsy
}
명시적으로 변환하려면 Boolean() 함수를 사용합니다.
Boolean("JavaScript"); // true
Boolean(""); // false

5. 논리 연산자와 Boolean
JavaScript의 논리 연산자는 Boolean 타입과 밀접한 관계가 있으며, 다음과 같이 작동합니다.
!: NOT - 값을 반전&&: AND - 둘 다 truthy일 경우 뒤 값을 반환||: OR - 앞 값이 truthy면 그 값을 반환
console.log(!false); // true
console.log(true && "value"); // "value"
console.log(null || "default"); // "default"
6. Boolean 관련 흔한 실수
- Boolean 객체 사용:
new Boolean(false)는 truthy로 평가됨 - 빈 배열과 객체는 truthy:
[],{}는 false가 아님 - == 비교: 암묵적 변환을 유발함.
===를 사용하는 것이 더 안전
7. Boolean 사용을 위한 모범 사례
- 항상 명시적 Boolean 변환 사용 권장:
Boolean(value) - 엄격한 비교(===)를 사용하여 예기치 않은 형변환 방지
- 조건문에서
if (value)사용 전, 값의 truthy 여부를 확실히 이해하기 - Boolean 객체 대신 원시 Boolean 값만 사용할 것
'프로그래밍 언어 > 자바스크립트' 카테고리의 다른 글
| JavaScript BigInt란? 대용량 정수 연산을 쉽게 처리하는 법 (0) | 2025.04.24 |
|---|---|
| number 타입 심층 분석, JavaScript 숫자의 특성과 한계 (0) | 2025.04.18 |
| JavaScript 데이터 타입의 특성, null은 왜 객체인가? (0) | 2025.04.06 |
| JavaScript에서 큰 숫자를 다루는 방법, BigInt 개념과 활용법 (0) | 2025.03.31 |
| JavaScript 숫자 연산 이해하기, number 타입 활용법 (0) | 2025.03.25 |