typeof null→"object" ?
《你不知道的Javascript》譯者:
原理是這樣的,不同的對象在底層都表示為二進制,在Javascript中二進制前三位都為0的話會被判斷為Object類型,null的二進制表示全為0,自然前三位也是0,所以執行typeof時會返回"object"。
不知道大家有沒有理解,我舉個非常不恰當的例子。
假設所有的Javascript對象都是16位的,也就是有16個0或1組成的序列。
基于上面的假設,我們猜想:
Array: 1000100010001000
null: 0000000000000000
使用typeof檢測[]和null的結果為:
typeof [] →"object"
typeof null→"object"
因為Array和null的前三位都是000。
注意:
為什么Array的前三位不是100?
這是因為二進制中的"前"一般來說代表的是低位,比如二進制00000011對應十進制數是3,它的前三位是011。
最后啰嗦一句,《通信原理》是門好課,編碼方面的東西講得一應俱全,通信計算機一家親~
努力成為優秀的前端工程師!
福利:字面量和對象類型常用形式表
字面量 | 對象類型 | 常用形式 |
---|---|---|
string | String | 'hello' |
number | Number | 1024 |
boolean | Boolean | true |
null | / | null |
undefined | / | undefined |
object | Object | {} |
/ | Array | [] |
/ | Date | new Date() |
/ | RegExp | /[a-zA-Z]/ |
/ | Error | / |
期待和大家交流,共同進步,歡迎大家加入我創建的與前端開發密切相關的技術討論小組:
- SegmentFault技術圈:ES新規范語法糖
- SegmentFault專欄:趁你還年輕,做個優秀的前端工程師
- 知乎專欄:趁你還年輕,做個優秀的前端工程師
- Github博客: 趁你還年輕233的個人博客
- 前端開發QQ群:660634678
微信公眾號: 人獸鬼 / excellent_developers
努力成為優秀前端工程師!