JavaScript 是全球數(shù)百萬前端開發(fā)人員最喜愛的語言,但與任何工具一樣,它也有其怪癖。
你有沒有想過當你對 null 使用 typeof 運算符時會發(fā)生什么?嗯,這是 JavaScript 中最奇怪、最令人困惑的事情之一。
typeof 運算符可以很好地處理“Hello World”這樣的文字,因為它返回 string 作為其類型。 數(shù)字和布爾值也是如此。
但是,當涉及到 null 時,您可能會期望它返回類似 null 或 undefined 的內(nèi)容,對嗎?但你可能會驚訝地發(fā)現(xiàn),當我們在 null 上使用 typeof 運算符時,它實際上返回 object.
這個結果看起來很奇怪,很容易讓開發(fā)者犯錯,尤其是那些剛接觸 JavaScript 的人。
但是為什么 JavaScript 會這么做呢?
要理解這一點,我們必須回到 20 世紀 90 年代 JavaScript 的早期。
當時,當該語言最初開發(fā)時,其設計存在錯誤。值 null 被賦予了一個特殊的內(nèi)部代碼,類似于用于對象的內(nèi)部代碼。結果,當 typeof 運算符檢查null時,它錯誤地將其識別為對象。
雖然這是一個無意的錯誤,但它仍然被認為是一個錯誤,因為它不符合邏輯。
不幸的是,這個錯誤已經(jīng)存在了很長時間,現(xiàn)在修復它可能會破壞許多依賴當前行為的現(xiàn)有代碼。
但隨著時間的推移,許多開發(fā)人員已經(jīng)學會忍受它并找到解決方法。
這提醒我們所有人,沒有一種編程語言是完美的,無論使用得多么廣泛。
我們的想法是理解這些怪癖,成為更好的開發(fā)人員,并為下一代編寫更可靠且無錯誤的代碼。
想要了解更多與 Web 開發(fā)和 AI 相關的內(nèi)容,請隨時關注我。讓我們一起學習、一起成長!






