본문 바로가기

프로그래밍 언어/자바스크립트

true와 false의 세계, JavaScript boolean

true와 false의 세계, JavaScript boolean

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

 

 

목차

  1. Boolean이란 무엇인가?
  2. true와 false의 정체
  3. Truthy와 Falsy 개념
  4. 암묵적 형변환과 Boolean
  5. 논리 연산자와 Boolean
  6. Boolean 관련 흔한 실수
  7. Boolean 사용을 위한 모범 사례

 

1. Boolean이란 무엇인가?

JavaScript에서 Booleantrue 또는 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 값만 사용할 것