1.null和undefined都被用來表示空值煌妈,當使用不嚴格等于號(==)做判斷時棚赔,他們是等價的。
console.log(null == undefined);//輸出true
console.log(null === undefined);//輸出false
這也是為什么我們在代碼中判斷相等時避免使用==
2.當對null執(zhí)行typeof運算時,結果返回object吉挣,也就是說null是一個對象,表示“空對象”
null的典型用法包括:
- 作為函數(shù)的參數(shù),表示該函數(shù)的參數(shù)不是對象纹坐。比如在使用Ajax進行get時稽荧,我們常用request.send(null)表示不發(fā)送數(shù)據(jù)
- 作為對象原型鏈的終點。在使用for in遍歷原型鏈的會用到予权。
console.log(Object.getPrototypeOf(Object.prototype));//輸出null
3.undefined,顧名思義表示“未定義”,它是變量的一種取值躏敢,表示變量沒有初始化。
undefined的用法包括:
- 變量被聲明了整葡,但沒有賦值時件余,等于undefined
JavaScript函數(shù)作用域中會發(fā)生變量申明提前
var func = function(){
console.log(a);//輸出undefined
var a = "hello";
};
func();
等價于
var func = function(){
var a;
console.log(a);//輸出undefined
a = "hello";
};
func();
- 查詢數(shù)組元素或對象屬性時返回undefined,表示該元素或屬性不存在
在使用標準for遍歷數(shù)組時遭居,如果數(shù)組中某個元素未定義啼器,就會輸出undefined
var mycars = new Array();
mycars[0] = "Saab";
mycars[2] = "Volvo";
mycars[4] = "BMW";
for (y=0;y<mycars.length;y++){
console.log(mycars[y]); //輸出Saab,undefind,Volvo,undefined,BMW
}
但是用for in遍歷時,并不會輸出undefined
for (y in mycars){
console.log(mycars[y]); //輸出Saab,Volvo魏滚,BMW
}
所以有人推薦不使用for in镀首,其實還有更深層次的原因。因為for in是對整個原型鏈的遍歷鼠次,如果我們修改了數(shù)組的原型更哄,那么遍歷出的結果就不僅僅是數(shù)組中的元素了。
- 函數(shù)沒有返回值腥寇,返回undefined
- 調用函數(shù)時成翩,應該提供的參數(shù)沒有提供,該參數(shù)等于undefined