Null:
null是js中的關鍵字,表示空值,null可以看作是object的一個特殊的值,如果一個object值為空,表示這個對象不是有效對象。
Undefined:
undefined不是js中的關鍵字,其是一個全局變量,是Global的一個屬性,以下情況會返回undefined:
1)使用了一個未定義的變量;var i;
2)使用了已定義但未聲明的變量;
3)使用了一個對象屬性,但該屬性不存在或者未賦值;
4)調用函數時,該提供的參數沒有提供:
function func(a){ console.log(a); } func();//undefined
5)函數沒有返回值時,默認返回undefined
var aa=func(); aa;//undefined
相同點:
都是原始類型的值,保存在棧中變量本地
兩者的區別:
1.類型不一樣:
console.log(typeOf undefined);//undefined console.log(typeOf null);//object
2.轉化為值時不一樣: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
何時使用:
null當使用完一個比較大的對象時,需要對其進行釋放內存時,設置為null;
var arr=["aa","bb","cc"]; arr=null;//釋放指向數組的引用