javascript - 왜 typeof null은 object일까?

ctrs·2023년 5월 23일
0
post-custom-banner

자바스크립트 공부 중

let 변수 = null;
console.log(typeof 변수);

대충 위와 같은 코드를 작성하게 되었다.
'당연히 결과는 null일 것이다' 라고 생각하며 실행시켜보았으나 결과는 object가 나왔다.

왜 그럴까?

결론부터 말하자면 이는 버그이며
자바스크립트의 초기 버전에서 남은 것이라고 한다.

그러면 왜 이 버그를 고치지 않는걸까?
왜 typeof null === "null"로 수정하지 않는걸까?

이미 수많은 사이트들의 코드가 기존 typeof로 작성되어 있기에
이를 수정한다면 많은 사이트들이 손상될 것이기 때문이다
하나의 자바스크립트 정신에서 이건 실현 가능하지 않아 거절하였다고 한다.

정보 통신 시스템 국제 표준화 기구(ECMA Internationl)에서는 아예
Type of Null은 "Object"다 라고 명시하였으며

모질라 프로젝트의 공식 문서에서도 아래와 같이 설명하고 있다.

// This stands since the beginning of JavaScript
typeof null === "object";

[참고]
overstack flow - Why is typeof null "object"?
mdn web docs - typeof
ECMA International - 11.4.3 The typeof Operator
Axel Rauschmayer 박사 블로그

profile
저장을 습관화
post-custom-banner

0개의 댓글