Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 문자열과 부울(Boolean) 값 비교하는 방법 완벽 정리

JavaScript에서 문자열과 부울(Boolean)을 비교하는 방법

JavaScript에서는 동등 연산자(==)를 사용해 문자열과 부울 값을 비교할 수 있습니다. 이때 JavaScript는 서로 다른 타입을 비교하기 위해 자동 형 변환(type coercion)을 수행하는데, 그 결과가 직관적이지 않아 많은 개발자를 혼란스럽게 만듭니다. 아래 예제를 통해 어떤 결과가 나오는지 하나씩 살펴보겠습니다.

true를 반환하는 경우

false == "0";   // true
true == "1";    // true
false == "";    // true

부울 값과 문자열을 ==로 비교하면, 먼저 부울 값이 숫자로 변환됩니다(true는 1, false는 0). 이후 문자열 역시 숫자로 변환된 뒤 비교가 진행됩니다.

  • false == "0" → false는 0이 되고, "0"도 숫자 0이 되므로 true
  • true == "1" → true는 1이 되고, "1"은 숫자 1이 되므로 true
  • false == "" → 빈 문자열 ""는 숫자 0으로 변환되므로 true

false를 반환하는 경우

false == "false"; // false
true == "true";   // false

문자열 "false"나 "true"는 유효한 숫자가 아니기 때문에 숫자로 변환하면 NaN(Not a Number)이 됩니다. NaN은 어떤 값과도 같지 않으므로 비교 결과는 항상 false입니다.

엄격한 비교(===)와 문자열 변환 활용하기

일치 연산자(===)는 형 변환 없이 값과 타입을 모두 비교합니다. 따라서 부울과 문자열처럼 타입이 다른 값을 비교하면 내용이 같아도 항상 false가 반환됩니다.

var data = true;
data === "true";         // false (타입이 다름)
String(data) === "true"; // true (문자열로 변환 후 비교)

위 예제처럼 String() 함수를 사용해 부울 값을 문자열로 명시적으로 변환한 뒤 비교하면, 의도한 대로 true를 얻을 수 있습니다.

정리

  • == 연산자는 비교 전에 암묵적인 형 변환을 수행하므로 예상치 못한 결과가 나올 수 있습니다.
  • 부울 값은 숫자로(true → 1, false → 0), 문자열은 숫자로 변환된 뒤 비교됩니다.
  • "true", "false" 같은 문자열은 숫자로 변환 시 NaN이 되어 항상 false를 반환합니다.
  • 타입까지 엄격하게 비교하려면 === 연산자를 사용하고, 필요하다면 String() 또는 Boolean()으로 타입을 맞춘 후 비교하는 것이 가장 안전합니다.