1.概述 null和undefined屬於js中兩種不同的基本數據類型,都可以表示“沒有”,含義非常相似。將一個變數賦值為undefined或null,老實說,語法效果幾乎沒區別。並且在if語句的判斷條件中,它們都會自動轉為false,相等運算符(==)甚至直接報告兩者相等 null是一個表示“空” ...
1.概述
null和undefined屬於js中兩種不同的基本數據類型,都可以表示“沒有”,含義非常相似。將一個變數賦值為undefined或null,老實說,語法效果幾乎沒區別。並且在if語句的判斷條件中,它們都會自動轉為false,相等運算符(==)甚至直接報告兩者相等
var a = null;
var b = undefined;
if (!a) {
console.log('a is false');
}//a is false
if (!b) {
console.log('b is false');
}//b is false
if (null == undefined) {
console.log('null == undefined is true')
}//null == undefined is true
null
是一個表示“空”的對象,轉為數值時為0;undefined是一個表示"此處無定義"的原始值,轉為數值時為NaN。
Number(null); // 0
null + 9; // 9
Number(undefined); // NaN
undefined + 9; // NaN
2.用法和含義
對於null和undefined,大致可以像下麵這樣理解。null表示空值,即該處的值現在為空。調用函數時,某個參數未設置任何值,這時就可以傳入null,表示該參數為空。比如,某個函數接受引擎拋出的錯誤作為參數,如果運行過程中未出錯,那麼這個參數就會傳入null,表示未發生錯誤。undefined表示“未定義”,下麵是返回undefined的典型場景。
// 變數聲明瞭,但沒有賦值
var i;
i // undefined
// 調用函數時,應該提供的參數沒有提供,該參數等於 undefined
function f(x) {
return x;
}
f() // undefined
// 對象沒有賦值的屬性
var o = new Object();
o.p // undefined
// 函數沒有返回值時,預設返回 undefined
function f() {}
f() // undefined