Why is typeof null “object”?

前端 未结 8 1293
暗喜
暗喜 2020-11-22 04:51

I\'m reading \'Professional Javascript for Web Developers\' Chapter 4 and it tells me that the five types of primitives are: undefined, null, boolean, number and string.

8条回答
  •  有刺的猬
    2020-11-22 05:21

    From the MDN page about the behaviour of the typeof operator:

    null

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

    In the first implementation of JavaScript, JavaScript values were represented as a type tag and a value. The type tag for objects was 0. null was represented as the NULL pointer (0x00 in most platforms). Consequently, null had 0 as type tag, hence the "object" typeof return value. (reference)

    A fix was proposed for ECMAScript (via an opt-in), but was rejected. It would have resulted in typeof null === 'null'.

提交回复
热议问题