null與對象的復雜關系(typeof null的結果是object的原因)


原文

  簡書原文: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”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM