以前只知道typeof null = object,可是卻歷來不知道是爲何。最新查閱資料的時候,看到了這個原理,記錄下來,方便本身之後查看。html
原理是這樣的,不一樣的對象在底層都表示爲二進制,在 JavaScript 中二進制前三位都爲 0 的話會被判
斷爲 object 類型, null 的二進制表示是全 0,天然前三位也是 0,因此執行 typeof 時會返回「 object 」。htm
這個bug是初版Javascript留下來的。在這個版本,數值是以32字節存儲的,由標誌位(1~3個字節)和數值組成。標誌位存儲的是低位的數據。這裏有五種標誌位:
- 000:對象,數據是對象的應用。
- 1:整型,數據是31位帶符號整數。
- 010:雙精度類型,數據是雙精度數字。
- 100:字符串,數據是字符串。
- 110:布爾類型,數據是布爾值。
最低位有一位,那麼標誌位只有一個1字節長度;或者是零位,標誌位有3個字節長度,多出兩個了字節,一共多出四種類型。
在網上看到一個更詳細的前世此生。連接以下:http://www.cnblogs.com/xiaoheimiaoer/p/4572558.html