JavaScript中Null和Undefined的區(qū)別
Null:
null是js中的關(guān)鍵字,表示空值,null可以看作是object的一個(gè)特殊的值,如果一個(gè)object值為空,表示這個(gè)對(duì)象不是有效對(duì)象。
Undefined:
undefined不是js中的關(guān)鍵字,其是一個(gè)全局變量,是Global的一個(gè)屬性,以下情況會(huì)返回undefined:
1)使用了一個(gè)未定義的變量;var i;
2)使用了已定義但未聲明的變量;
3)使用了一個(gè)對(duì)象屬性,但該屬性不存在或者未賦值;
4)調(diào)用函數(shù)時(shí),該提供的參數(shù)沒有提供:
function func(a){
???console.log(a);??????
}
func();//undefined
?5)函數(shù)沒有返回值時(shí),默認(rèn)返回undefined
var?aa=func();
aa;//undefined
相同點(diǎn):
都是原始類型的值,保存在棧中變量本地
兩者的區(qū)別:
1.類型不一樣:
console.log(typeOf undefined);//undefined
console.log(typeOf?null);//object
2.轉(zhuǎn)化為值時(shí)不一樣:undefined為NaN ,null為0
console.log(Number(undefined));//NaN
console.log(Number(10+undefined));//NaN
console.log(Number(null));//0
console.log(Number(10+null));//10
?3.undefined===null;//false
??? undefined==null;//true
何時(shí)使用:
null當(dāng)使用完一個(gè)比較大的對(duì)象時(shí),需要對(duì)其進(jìn)行釋放內(nèi)存時(shí),設(shè)置為null;
var?arr=["aa","bb","cc"];
arr=null;//釋放指向數(shù)組的引用