|
|
|
|
|
|
null 和 undefined 是JavaScript中常見的兩個值,在使用過程中,有時比較容易混淆,不知用哪個好。在本文中,將通過示例詳細介紹 null 和 undefined ,通過比較,了解它們之間的差別。

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