null和undefined是JavaScript五種基本數據類型中的兩種。
null是一個特殊值,但我們常常誤解它,有時候我們會把它和另一個數據類型undefined的含義互相混淆。
首先我們來了解一下null這個特殊值會使用在哪些場景以及它代表着什么樣的含義?
1.用來初始化一個變量,這個變量可能賦值為一個對象。看着可能有點懵逼,我們結合代碼來解析一下。如下:
var person = null;
//也就是說上面那句話可以這么理解:聲明一個變量,初始化這個變量的變量值為null,這個變量可能是一個對象。
2.用來和一個已經初始化的變量比較,這個變量可以是也可以不是一個對象。同樣我們結合代碼來解析一下。如下:
var person = getPerson();
if ( person !== null){
doSomething();
}
看完代碼是不是就一目了然了?原理是為代碼做鋪墊的,萬事離不開代碼,所以理解不了原理,我們就結合代碼來理解。當你知道代碼你卻不知道它的原理,當你知道它的原理卻不知道它的代碼。所以小劉就建議大家用原理+代碼來理解和學習。
3.當函數的參數為對象時,用作參數傳入。
function doSomething (arg1){
if(arg1===Object ){
arg1=null;
}
}
4.當函數的返回值是對象時,用作返回值傳出。
function getPerson(){
if (condition){
return new Person("KobeBryant");
}else{
return null;
}
}
其次,當我們知道了null的使用場景,是不是也得知道在什么樣的場景是不應當使用null的呢?
1.不要使用null來檢測是否傳入了某個參數。
function doSomething (arg1,arg2,arg3,arg4) {
if (arg2 !==null ){
doSomethingElse();
}
}
2.不要用null來檢測一個未初始化的變量。
var person;
if ( person !== null){
doSomething();
}
//用來和未初始化的變量作比較
看了上面的講解,是不是瞬間秒懂並掌握,如果對您有幫助,請點個贊,如果哪里不夠好,請互相學習,可以評論下,我們交流下~
我們繼續學習,接下來來對undefined這個莫名其妙的東西進行解析。
同null一樣,undefined也是一個特殊值,它是那些被聲明了卻未初始化的變量,即undefined,等待被賦值;
如:var person;
console(person === undefined);//輸出為true
雖然這段代碼能夠正常工作,但是還是避免在代碼中使用undefined,因為不管聲明了變量還是未聲明的變量,typeof運算結果都能返回一個undefined值。
如:var person;
console(typeof person);//輸出值為undefined;
console(typeof foo);//輸出值為undefined;
在語句中,未聲明的變量是會報錯的,通過禁用特殊值undefined,可以有效的確保只在一種情況下typeof才會返回undefinedl:那就是當變量未聲明時;如果使用了一個可能賦值為一個對象的變量時,則將其賦值為null;將變量初始化賦值為null表明了這個變量的意圖,它最終很可能賦值為對象。typeof運算符運算null的類型時返回Object,這樣就可以和undefined區分開了。
如:console(null ==undefined);//輸出值為true
var person=null;
console(typeof null);//輸出值為object
---------------------
作者:111111111188888888
來源:CSDN
原文:https://blog.csdn.net/DreamsTom/article/details/53888829
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!