null 和 undefined

ladybug7發表於2024-06-03

1995年 JavaScript 誕生時,最初像 Java 一樣,只設定了null表示"無"。根據 C 語言的傳統,null可以自動轉為0

Number(null) // 0
5 + null // 5

上面程式碼中,null轉為數字時,自動變成0。

但是,JavaScript 的設計者 Brendan Eich,覺得這樣做還不夠。首先,第一版的 JavaScript 裡面,null就像在 Java 裡一樣,被當成一個物件,Brendan Eich 覺得表示“無”的值最好不是物件。其次,那時的 JavaScript 不包括錯誤處理機制,Brendan Eich 覺得,如果null自動轉為0,很不容易發現錯誤。

因此,他又設計了一個undefined。區別是這樣的:null是一個表示“空”的物件,轉為數值時為0undefined是一個表示"此處無定義"的原始值,轉為數值時為NaN

Number(undefined) // NaN
5 + undefined // NaN

相關文章