JavaScript null 與 undefined

Harshit Jindal 2023年10月12日
  1. JavaScript 中的 null
  2. JavaScript 中的 undefined
  3. 為什麼人們會混淆 nullundefined 與 JavaScript 中的相同
  4. JavaScript 中 nullundefined 之間的區別
JavaScript null 與 undefined

JavaScript 是一種強大的語言,但使用不同的資料型別可能會造成混淆,尤其是對於初學者而言。nullundefined 資料型別似乎什麼都不代表,但它們是不同的。

需要區分這些並知道何時使用哪一個以避免執行時錯誤。

本文討論 nullundefined 及其區別。

JavaScript 中的 null

null 是 JavaScript 中的一個物件。如果它沒有意義,那沒關係,因為它是 JavaScript 中的一個錯誤。它應該是原始資料型別之一,但進行此更改會破壞許多現有的程式碼庫。

這是一個使用者分配的值; JavaScript 永遠不會單獨為變數提供 null 的值。它是分配給留空的變數的值。它可以稱為空值。

JavaScript 中的 undefined

undefined 是一種狀態。當我們宣告一個變數但從未用值初始化它時,它被稱為未定義。它是 JavaScript 用來初始化變數的預設值。它也是一個空值。

為什麼人們會混淆 nullundefined 與 JavaScript 中的相同

nullundefined 在以下方面是相同的:

  • 兩者都是原始資料型別。
  • 如果你使用相等運算子 == 比較它們,則返回 true。
null == undefined;  // returns true

JavaScript 將兩者都視為空值。

  • 在表示式中使用時,undefinednull 都會產生 false
!!undefined;  // false
!!null;       // false

JavaScript 中 nullundefined 之間的區別

  • 型別差異
console.log(typeof (null));       // object
console.log(typeof (undefined));  // undefined

在上面的示例中,我們使用 typeof 運算子來檢查它們的資料型別。它將 null 資料型別作為 object 返回,將 undefined 資料型別返回為 undefined。儘管相等運算子 == 返回 true,但標識運算子 === 將返回 false,因為它們的值相等但具有不同的資料型別。

  • 算術運算

null 在執行算術運算時表現得像一個沒有值的數字。執行操作會給出類似於 null 為 0 的結果。

console.log(4 + null);  // 4
console.log(4 * null);  // 0
console.log(4 - null);  // 4
console.log(4 / null);  // Infinity

需要注意的是,雖然它在算術運算中可能被視為 0,但 null 的值不是 0

同時,undefined 在算術運算中使用時返回 NaN

console.log(4 + undefined);  // NaN
console.log(4 * undefined);  // NaN
console.log(4 - undefined);  // NaN
console.log(4 / undefined);  // NaN
作者: Harshit Jindal
Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn