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

JavaScript에서 undefined의 불리언(Boolean) 값은 무엇일까?

JavaScript에서 undefined의 불리언 값은 false입니다. 흥미로운 점은 undefined뿐만 아니라 null, false, NaN, 빈 문자열("") 역시 모두 false로 평가된다는 것입니다. 이처럼 false로 변환되는 값들을 'falsy 값'이라고 부르며, 조건문이나 논리 연산에서 중요한 역할을 합니다.

예제

다음 예제에서는 undefined, false, NaN, 빈 문자열의 불리언 값을 화면에 출력합니다.

코드의 처음 세 줄을 살펴보면 배열 안에 hole(구멍)이 생성됩니다. 배열 arr은 인덱스 0~3까지만 값을 가지고 있지만, arr[6] = 7;을 실행하면 인덱스 4와 5에는 아무런 값이 할당되지 않은 채 건너뛰게 됩니다. 이렇게 비어 있는 자리를 'hole'이라고 하며, hole은 곧 빈 값(empty value)을 의미합니다. 따라서 해당 위치에 접근하면 undefined가 반환되고, 그 불리언 값인 false가 출력됩니다.

<html>
<body>
   <script>
      var arr = [1,2,3,4];
      arr[6] = 7;
      var x = arr[4]
      document.write(Boolean(x));
      var y = undefined;
      document.write("</br>");
      document.write(Boolean(y));
      var z = 5/"k"
      document.write("</br>");
      document.write(Boolean(z));
      var a = "";
      document.write("</br>");
      document.write(Boolean(a));
      document.write("</br>");
      var b = false;
      document.write(Boolean(b));
   </script>
</body>
</html>

출력 결과

false
false
false
false
false

정리

위 출력 결과에서 알 수 있듯이, 다섯 가지 경우 모두 false가 반환됩니다.

  • 배열의 hole(arr[4]): 빈 값이므로 undefined로 취급되어 false
  • undefined: 값이 할당되지 않은 상태이므로 false
  • NaN(5/"k"): 숫자가 아닌 잘못된 연산 결과이므로 false
  • 빈 문자열(""): 내용이 없으므로 false
  • false: 원래부터 거짓 값이므로 false

반대로 객체, 빈 배열, 빈 객체, 0이 아닌 숫자 등은 모두 true로 평가되는 'truthy 값'에 해당합니다. JavaScript의 이러한 타입 강제 변환(type coercion) 특성을 이해하면 조건문 작성 시 발생할 수 있는 예기치 않은 버그를 예방하는 데 큰 도움이 됩니다.