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
是一個表示“空”的物件,轉為數值時為0
;undefined
是一個表示"此處無定義"的原始值,轉為數值時為NaN
。
Number(undefined) // NaN
5 + undefined // NaN