|
|
|
|
|
null
和 undefined
是JavaScript中常見(jiàn)的兩個(gè)值,在使用過(guò)程中,有時(shí)比較容易混淆,不知用哪個(gè)好。在本文中,將通過(guò)示例詳細(xì)介紹 null
和 undefined
,通過(guò)比較,了解它們之間的差別。
關(guān)于 null 和 undefined 的含義
null:它是一個(gè)賦值值,這意味著它作為一個(gè)值專(zhuān)門(mén)分配給一個(gè)變量,表示該變量的空狀態(tài)。
undefined:它不是賦值值,這意味著它沒(méi)有專(zhuān)門(mén)分配給變量。
實(shí)例比較 null 和 undefined
JavaScript 在特定實(shí)例上返回 undefined
。例如,當(dāng)聲明一個(gè)變量但未分配任何值時(shí),返回 undefined
。參考下面給出的代碼:
let myVar;
console.log(myVar); //返回 undefined
console.log(typeof myVar); //返回undefined
在上面的示例中,可以看到“myVar
”已聲明但未分配任何值;因此,當(dāng)我們 console.log 'myVar'
時(shí),返回 undefined
,當(dāng)我們使用 typeOf
運(yùn)算符檢查 myVar
的類(lèi)型時(shí),再次返回 undefined
。
但 null
與 undefined
不同。null
是一個(gè)賦值值,專(zhuān)門(mén)分配給一個(gè)變量,作為表示該變量的空狀態(tài)的值。
let myVar = null;
console.log(myVar); //返回 null
console.log(typeof myVar); //返回 object
在上面的例子中,可以看出我們?cè)?console.log 'myVar'
變量時(shí)得到了 null
。但是當(dāng)我們使用 JavaScript 中的 typeof
運(yùn)算符檢查“myVar
”變量的類(lèi)型時(shí),我們會(huì)得到 Object
。
因此,很明顯 null
和 undefined
屬于不同的類(lèi)型。null
是對(duì)象類(lèi)型,而 undefined
是未定義類(lèi)型。讓我們檢查 null
是否等于 undefined
。
console.log(null == undefined); // true
console.log(null === undefined); // false
當(dāng)我們檢查 if (null == undefined)
時(shí),我們?cè)诳刂婆_(tái)中得到了 true
,但是當(dāng)我們檢查 if (null === undefined)
時(shí),我們得到了 false
,因?yàn)?null
等于 undefined
但并不嚴(yán)格。正如我們已經(jīng)看到 null
和 undefined
屬于不同的類(lèi)型,當(dāng)使用嚴(yán)格相等運(yùn)算符(===
)比較它們時(shí),我們會(huì)得到 false
。我們可從下面文章中詳細(xì)了解相等運(yùn)算符和嚴(yán)格相等運(yùn)算符之間的區(qū)別:
JavaScript中undeclared, undefined和null有什么區(qū)別?
如果未使用適當(dāng)?shù)年P(guān)鍵字(即var
,let
或const
)聲明變量,則該變量未聲明。以下文章介紹了聲明變量的關(guān)鍵字區(qū)別:
訪問(wèn)一個(gè)未聲明的變量會(huì)拋出一個(gè)ReferenceError
。
console.log(x); // ReferenceError: x is not defined
一個(gè)變量是undefined
如果它沒(méi)有被分配一個(gè)值。undefined
是 JavaScript 中的原始數(shù)據(jù)類(lèi)型,表示有意或無(wú)意的值的缺失。
let x;
console.log(x); // undefined
一個(gè)變量被賦予一個(gè)null
的值,與任何其他值一樣。null
也是 JavaScript 中的原始數(shù)據(jù)類(lèi)型,并且始終表示有意缺少值。
let x = null;
console.log(x); // null
JS 面試題:一個(gè)變量是null、undefined 還是 undeclared 有什么區(qū)別?
在 Javascript 中,undefined
和null
與變量包含的值有些相關(guān),undeclared
的情況有所不同。
undefined
和 null
都屬于數(shù)據(jù)類(lèi)型類(lèi)別。
undefined
是一個(gè)已經(jīng)聲明但沒(méi)有值的變量,并且它本身是“undefined ”的類(lèi)型。
null
是一個(gè)變量值,它是一個(gè)對(duì)象類(lèi)型。
我們使用 console.log();
和 type of
檢查變量是否 undefined
或 null
。
undeclared
的變量是一個(gè)沒(méi)有“var
”關(guān)鍵字聲明的變量。
testVar = ‘hello world’;
而不是
var testVar = ‘hello world’;
當(dāng)前面的代碼被執(zhí)行時(shí),undeclared
的變量被創(chuàng)建為全局變量并且它們是可配置的(例如可以刪除),參考文章:
總結(jié)
本文詳細(xì)比較介紹了JavaScript中的null
和undefined
,還有undeclared
,通過(guò)本文的學(xué)習(xí),我們應(yīng)該了解到null
和undefined
的使用區(qū)別。