jeck貓
2018-11-13 13:15:05
js高級程序設(shè)計第三版,第3章數(shù)據(jù)類型,指出實際上,undefined值是派生自null值,因此ECMA-262規(guī)定對它們的相等性測試要返回true。這句話中,“undefined值是派生自null值”,怎么理解?
1 回答

哈士奇WWW
TA貢獻1799條經(jīng)驗 獲得超6個贊
網(wǎng)上查了一下
與JavaScript的歷史有關(guān)。1995年JavaScript誕生時,最初像Java一樣,只設(shè)置了null作為表示"無"的值。
根據(jù)C語言的傳統(tǒng),null被設(shè)計成可以自動轉(zhuǎn)為0。
Number(null)0Number(undefined)NaN
但是,JavaScript的設(shè)計者Brendan Eich,覺得這樣做還不夠,有兩個原因。
首先,null像在Java里一樣,被當成一個對象。但是,JavaScript的數(shù)據(jù)類型分成原始類型(primitive)和合成類型(complex)兩大類,Brendan Eich覺得表示"無"的值最好不是對象。
其次,JavaScript的最初版本沒有包括錯誤處理機制,發(fā)生數(shù)據(jù)類型不匹配時,往往是自動轉(zhuǎn)換類型或者默默地失敗。Brendan Eich覺得,如果null自動轉(zhuǎn)為0,很不容易發(fā)現(xiàn)錯誤。
因此,Brendan Eich又設(shè)計了一個undefined。
5 + null// 55 + undefined// NaN typeof null;//print: 'object'typeof undefined;//print: 'undefined'
添加回答
舉報
0/150
提交
取消