JavaScript에서 true 또는 false로 평가되는 값은 Truthy와 Falsy라는 두 개념으로 나뉩니다. 이 값들은 논리적 문맥(예: 조건문 if)에서 암시적으로 형변환되어 평가됩니다.

1. Falsy 값 (false로 평가되는 값)

다음 값들은 false로 평가됩니다:

false
0 (숫자 0)
-0 (음수 0)
0n (BigInt의 0 값)
"" (빈 문자열)
null
undefined
NaN (Not-a-Number)

2. Truthy 값 (true로 평가되는 값)

Falsy 값에 속하지 않는 모든 값은 Truthy로 평가됩니다. 대표적인 Truthy 값은 다음과 같습니다:

true
숫자(0이 아닌 모든 값): 1, -1, 3.14, Infinity, -Infinity
문자열(빈 문자열이 아닌 모든 값): "0", "false", " "
객체(빈 객체 포함): {}, []
함수: function() {}
심볼: Symbol()
BigInt(0n이 아닌 값): 1n, -1n

3. 특별한 주의 사항

  • “false”와 같은 문자열은 Truthy입니다.
  • 문자열 내용은 무관하며, 빈 문자열(““)만 Falsy입니다.
  • [](빈 배열)과 {}(빈 객체)는 Truthy입니다.
  • 비어 있어도 객체와 배열은 항상 Truthy로 평가됩니다.
//예제
if ("false") {
  console.log("Truthy!"); // 출력
}

if ([]) {
  console.log("Truthy!"); // 출력
}

if ({}) {
  console.log("Truthy!"); // 출력
}

정리

  • Falsy 값: false, 0, -0, 0n, ““(공백도 없는 빈 문자열), null, undefined, NaN
  • Truthy 값: Falsy 값 외의 모든 값