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