1In the first implementation of JavaScript, JavaScript values were represented
2as a type tag and a value. The type tag for objects was 0. null was represented
3as the NULL pointer (0x00 in most platforms). Consequently, null had 0 as type
4tag, hence the "object" typeof return value. (reference)
5
6A fix was proposed for ECMAScript (via an opt-in), but was rejected.
7It would have resulted in typeof null === 'null'.