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