JS中null和undefined的區(qū)別
目錄
- 前言
- 定義
- 異同點(diǎn)
- 實(shí)際應(yīng)用
- 總結(jié)
- 1.JS 中如何判斷 undefined
- 2.JS 中如何判斷 null
前言
在JavaScript中,null和undefined是兩個(gè)常見的數(shù)據(jù)類型,但總是在使用時(shí)由于對(duì)兩者區(qū)別不清而導(dǎo)致錯(cuò)誤,今天就讓我們一起來看看這兩種類型的區(qū)別。
定義
首先讓我們來看看兩者的定義: null是JavaScript中的一個(gè)特殊值,表示“空值”或“無值”。當(dāng)我們想要表示某個(gè)變量不包含任何值時(shí),就可以將其設(shè)置為null。 undefined是JavaScript中的另一種特殊值,表示“未定義的值”。當(dāng)我們聲明一個(gè)變量但沒有給它賦值時(shí),該變量的值就是undefined。
異同點(diǎn)
相同點(diǎn):
- undefined和null被轉(zhuǎn)換為布爾值的時(shí)候,兩者都為false
- undefined==null,結(jié)果為true都表示一個(gè)空值,兩者判斷值相等上是一樣的
盡管null和undefined都表示“無值”,但它們之間還是有一些區(qū)別的。
不同點(diǎn):
- null表示一個(gè)空對(duì)象指針,而undefined表示一個(gè)未定義的值。
- 當(dāng)我們聲明一個(gè)變量但沒有給它賦值時(shí),該變量的值就是undefined。當(dāng)我們想要明確地表示某個(gè)變量不包含任何值時(shí),就可以將其設(shè)置為null。
- 如果我們使用typeof運(yùn)算符檢查一個(gè)null值時(shí),返回的結(jié)果是“object”。而如果檢查一個(gè)未聲明的變量時(shí),返回的結(jié)果是undefined。
- undefined不是關(guān)鍵字,而null是關(guān)鍵字
- undefined本質(zhì)上是window的一個(gè)屬性,而null是一個(gè)對(duì)象
接下來就讓我們來結(jié)合一些小小的例子來進(jìn)行理解:
let firval = null; let secval; console.log(firval == secval); // 輸出:true console.log(firval === secval); // 輸出:false console.log(firval); // 輸出:null console.log(secval); // 輸出:undefined console.log(typeof firval); // 輸出:object console.log(typeof secval); // 輸出:undefined
在上面的示例中,我們聲明了兩個(gè)變量firval和secval。firval的值被設(shè)置為null,而secval沒有被賦值,因此它的值是undefined。當(dāng)我們使用console.log()函數(shù)打印這兩個(gè)變量時(shí),分別輸出了null和undefined。當(dāng)我們使用typeof運(yùn)算符檢查這兩個(gè)變量的類型時(shí),分別輸出了object和undefined,同時(shí)需要注意null與undefined本質(zhì)上是不同,當(dāng)使用雙等時(shí)輸出為true相信大家應(yīng)該都有所了解,沒錯(cuò),因?yàn)樵?JavaScript 里,雙等號(hào)判斷相等時(shí)會(huì)進(jìn)行隱式類型轉(zhuǎn)換,所以是不嚴(yán)格的。
實(shí)際應(yīng)用
在實(shí)際的開發(fā)中,我們經(jīng)常需要使用null和undefined在某些特殊的情景。例如,當(dāng)我們從服務(wù)器獲取數(shù)據(jù)時(shí),如果數(shù)據(jù)不存在,我們可能會(huì)將返回值設(shè)置為null或undefined。這樣做可以幫助我們更好地處理數(shù)據(jù)并避免出現(xiàn)錯(cuò)誤。
以下便是一個(gè)null應(yīng)用場(chǎng)景:
function getData() { let data = null; // 如果數(shù)據(jù)不存在,返回null if (!data) { return null; } // 處理數(shù)據(jù) // ... // 如果處理成功,返回處理結(jié)果 return result; }
在上面的示例中,我們定義了一個(gè)名為getData
的函數(shù),用于獲取數(shù)據(jù)并處理它。如果數(shù)據(jù)不存在,我們將返回值設(shè)置為null。否則,我們將處理數(shù)據(jù)并返回處理結(jié)果。
除此之外,null還有一個(gè)前端人員都熟悉的作用:作為對(duì)象原型鏈的終點(diǎn)
對(duì)于undefined的作用,這里大致列舉以下幾種:
如果變量聲明了,但沒有賦值,它就等于undefined 。
函數(shù)中的參數(shù)沒有給時(shí),該參數(shù)就等于undefined 。
對(duì)象沒有進(jìn)行賦值,該屬性的值為undefined。
當(dāng)函數(shù)沒有返回值時(shí),默認(rèn)返回undefined。
總結(jié)
在本文中,我們簡(jiǎn)單探討了JavaScript中的null和undefined類型,需要記住的是,null表示一個(gè)空對(duì)象指針,而undefined表示一個(gè)未定義的值。當(dāng)我們想要明確地表示某個(gè)變量不包含任何值時(shí),就可以將其設(shè)置為null。而當(dāng)我們聲明一個(gè)變量但沒有給它賦值時(shí),該變量的值就是undefined。
補(bǔ):
1.JS 中如何判斷 undefined
JavaScript 中有兩個(gè)特殊數(shù)據(jù)類型:undefined 和 null,下節(jié)介紹了 null 的判斷,下面談?wù)?undefined 的判斷。
以下是不正確的用法:
var exp = undefined; if (exp == undefined) { alert("undefined"); }
exp 為 null 時(shí),也會(huì)得到與 undefined 相同的結(jié)果,雖然 null 和 undefined 不一樣。注意:要同時(shí)判斷 undefined 和 null 時(shí)可使用本法。
var exp = undefined; if (typeof(exp) == undefined) { alert("undefined"); }
以下是正確的用法:
var exp = undefined; if (typeof(exp) == "undefined") { alert("undefined"); }
2.JS 中如何判斷 null
以下是不正確的用法:
var exp = null;? if (exp == null)? {? alert(“is null”);? }
exp 為 undefined 時(shí),也會(huì)得到與 null 相同的結(jié)果,雖然 null 和 undefined 不一樣。注意:要同時(shí)判斷 null 和 undefined 時(shí)可使用本法。
var exp = null;? if (!exp)? {? alert(“is null”);? }
如果 exp 為 undefined 或者數(shù)字零,也會(huì)得到與 null 相同的結(jié)果,雖然 null 和二者不一樣。注意:要同時(shí)判斷 null、undefined 和數(shù)字零時(shí)可使用本法。
var exp = null;? if (typeof(exp) == “null”)? {? alert(“is null”);? }
為了向下兼容,exp 為 null 時(shí),typeof 總返回 object。
var exp = null;? if (isNull(exp))? {? alert(“is null”);? }
JavaScript 中沒有 isNull 這個(gè)函數(shù)。
以下是正確的用法:
var exp = null; if (!exp && typeof(exp)!=”undefined” && exp!=0) { alert(“is null”); }
到此這篇關(guān)于JS中null和undefined的區(qū)別的文章就介紹到這了,更多相關(guān)JS null undefined內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
相關(guān)文章:
1. 詳解CSS偽元素的妙用單標(biāo)簽之美2. 使用Spry輕松將XML數(shù)據(jù)顯示到HTML頁(yè)的方法3. HTML5 Canvas繪制圖形從入門到精通4. XHTML 1.0:標(biāo)記新的開端5. php網(wǎng)絡(luò)安全中命令執(zhí)行漏洞的產(chǎn)生及本質(zhì)探究6. 利用CSS3新特性創(chuàng)建透明邊框三角7. asp(vbscript)中自定義函數(shù)的默認(rèn)參數(shù)實(shí)現(xiàn)代碼8. ASP基礎(chǔ)知識(shí)VBScript基本元素講解9. JSP的Cookie在登錄中的使用10. XML入門的常見問題(四)
