JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적 변화가 이루어졌습니다.
지금 설명하려는 것은 최신 문법에 대한 내용이 아닙니다. 긴 세월 존재해왔던 만큼 일어나는 특이한 현상이기도 합니다.
JavaScript typeof null = object?
null
은 JavaScript
의 원시 데이터 타입입니다. 값의 제공자에 의해 비어있는 값을 표현하기 위해 고안되었습니다. 비슷한 데이터 타입으로 undefined
가 있지만 null
과의 데이터 타입은 다릅니다. undefined
의 데이터 타입은 “undefined”입니다.
그렇다면 null
의 데이터 타입은 무엇일까요? null
이라고 생각하실 수 있겠지만 정답은 object입니다. typeof null
의 결과가 뜬금없이 object
가 나오는 이유입니다.
왜 null
의 데이터 타입이 object
일까요? 에 대한 정답은 아주 허무합니다. 사실 이 것은 JavaScript 문법 자체의 알려진 버그입니다.
이 문제가 알려진 후 수정을 위해 새로운 ECMA 표준 제안이 만들어지기도 했습니다. 하지만 문제가 너무 오래 전 부터 발생하였기도 하고, 무심코 타입을 변경했다가는 수많은 프로젝트에 악영향을 미칠 것을 고려해 현재까지도 이 문제를 고치지 않고 유지하고 있는 것이었습니다.
따라서 null
의 데이터 검증이나 타입 검사를 하기 전에는 데이터 타입이 의도와는 다를 수 있으므로 유의해주셔야 합니다.
참고자료
- typeof null: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof#typeof_null