儘管不是原始類型,為什麼 typeof Null 回傳「Object」?
在閱讀《Web 開發人員的專業 Javascript》時,您遇到一個困惑:本章指出原語包括 null,但 typeof(null) 產生「object」。由於原語通常按值傳遞,因此物件按引用傳遞,這似乎與 null 的原始性質相矛盾。
型別操作的歷史根源
深入研究 JavaScript 的歷史,我們發現這種異常源自於該語言的最初實現。在 JavaScript 的初期,值的特徵是型別標籤和值。物件的類型標記為 0。由 NULL 指標 (0x00) 表示的 Null 無意中被指派了類型標記 0。
Remains of the Past
null 與「object」類型標記的這種意外關聯導致了錯誤的 typeof(null) 結果。儘管語言隨後進行了更新和進步,但由於擔心破壞現有程式碼,這種行為仍然存在。
修復提議但被拒絕的
已努力糾正此問題通過在ECMAScript 中提出可選修復,旨在將typeof(null) 返回為“null” 。然而,該提議遭到拒絕。它的實作會帶來重大變化,可能會破壞依賴現有行為的遺留程式碼。
當前情況
因此,特殊的 typeof(null) 行為仍然存在嵌入 JavaScript 結構中。 JavaScript 中的型別操作仍然是該語言的一個微妙且受歷史影響的方面,這一持久的怪癖就是例證。
以上是為什麼 JavaScript 中 `typeof null` 回傳「object」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!