原文
簡書原文:https://www.jianshu.com/p/c1608452d056
前言
對象是 JavaScript 的基礎。在 JavaScript 中一共有六種主要類型(術語是“語言類型”):string、number、boolean、 null、undefined、object。
簡單基本類型(string、boolean、number、null 和 undefined)本身並不是對象。
null 有時會被當作一種對象類型,這是為什么呢?因為使用typeof null得到的結果竟然是object,是不是覺得很奇怪,一個簡單的數據類型,但是typeof得到的結果竟然是對象,這是為什么呢?
typeof null的結果是null的原因
這其實只是語言本身的一個 bug,即對 null 執行typeof null 時會返回字符串 "object"。實際上,null 本身是基本類型。
原理是這樣的,不同的對象在底層都表示為二進制,在 JavaScript 中二進制前三位都為 0 的話會被判斷為 object 類型,null 的二進制表示是全 0,自然前三位也是 0,所以執行 typeof 時會返回“object”。