這裏稍稍記錄一下null和undefined

這兩個值幾乎沒有什麼區別,我們都知道這兩個值都表示無的意思,他們的歷史也簡單的說一下吧

原來,這與JavaScript的歷史有關。1995年JavaScript誕生時,最初像Java一樣,只設置了null作爲表示"無"的值。根據C語言的傳統,null被設計成可以自動轉爲0。

 

Number(null)
// 0

5 + null
// 5

但是,JavaScript的設計者Brendan Eich,覺得這樣做還不夠,有兩個原因。
首先,null像在Java裏一樣,被當成一個對象。但是,JavaScript的數據類型分成原始類型(primitive)和合成類型(complex)兩大類,Brendan Eich覺得表示"無"的值最好不是對象。
其次,JavaScript的最初版本沒有包括錯誤處理機制,發生數據類型不匹配時,往往是自動轉換類型或者默默地失敗。
Brendan Eich覺得,如果null自動轉爲0,很不容易發現錯誤。因此,Brendan Eich又設計了一個undefined。

最初設計,JavaScript的最初版本是這樣區分的:null是一個表示"無"的對象,轉爲數值時爲0;undefined是一個表示"無"的原始值,轉爲數值時爲NaN。

從這一點就可以知道兩者之間的區別了,下面例子足以說明

 

1 + undefined // NaN , undefined是一個表示"無"的原始值,轉爲數值時爲NaN
1 + null // 1 , null是一個表示"無"的對象,轉爲數值時爲0;

兩者其他的使用以及判定幾乎沒有區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章