null與undefined的區別


 

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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM