1. 歷史
- 1995年 JavaScript 誕生時,最初像 Java 一樣囱嫩,只設(shè)置了
null
表示"無"。根據(jù) C 語言的傳統(tǒng)漏设,null
可以自動轉(zhuǎn)為0墨闲。
- 但是,JavaScript 的設(shè)計者 Brendan Eich郑口,覺得這樣做還不夠鸳碧。首先,第一版的 JavaScript 里面犬性,
null
就像在 Java 里一樣瞻离,被當(dāng)成一個對象,Brendan Eich 覺得表示“無”的值最好不是對象乒裆。其次琐脏,那時的 JavaScript 不包括錯誤處理機制,Brendan Eich 覺得缸兔,如果null
自動轉(zhuǎn)為0日裙,很不容易發(fā)現(xiàn)錯誤。
- 因此惰蜜,他又設(shè)計了一個
undefined
昂拂。區(qū)別是這樣的:null
是一個表示“空”的對象,轉(zhuǎn)為數(shù)值時為0抛猖;undefined
是一個表示"此處無定義"的原始值格侯,轉(zhuǎn)為數(shù)值時為NaN
鼻听。
2. 返回undefined
的典型場景
// 變量聲明了,但沒有賦值
var i;
i // undefined
// 調(diào)用函數(shù)時联四,應(yīng)該提供的參數(shù)沒有提供撑碴,該參數(shù)等于 undefined
function f(x) {
return x;
}
f() // undefined
// 對象沒有賦值的屬性
var o = new Object();
o.p // undefined
// 函數(shù)沒有返回值時,默認(rèn)返回 undefined
function f() {}
f() // undefined
3. 一些面試題
undefined == null // true
undefined === null // false
Number(null) // 0
Number(undefined) // NaN
----
5 + null // 5
5 + undefined // NaN
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者