JavaScript 中 Null 和 Undefined 的区别

2025-05-28

JavaScript 中 Null 和 Undefined 的区别

每当我遇到null或时undefined,我都会对 JavaScript 中每种数据类型的使用方式感到非常困惑。

我的意思是,它们有什么区别?它们不是都表达了“无”的概念吗

Giphy

我决定做一些研究,深入了解这两种数据类型。掌握这些知识很有帮助,这样你就能在需要的时候正确地使用它们。我还发现,有时面试中会提到null和之间的区别undefined。👀

介绍

JavaScript 有7 种原始数据类型,其中两种是nullundefined

Null是一个赋值,这意味着null当你希望变量为空时,你可以将其赋值给任何变量。它故意留空,并指向一个空值。

let hasCat = null;
// nullish
Enter fullscreen mode Exit fullscreen mode

Undefined是一个存在但尚未初始化的变量这意味着稍后我可以返回该变量并为其赋一个之前没有的值。所以,如果我声明一个没有值的变量,它就被视为未初始化。

let currentJob;
// undefined
Enter fullscreen mode Exit fullscreen mode

我对它们的理解是:是的,它们非常相似,因为它们都没有你试图访问的值。如果你在 JavaScript 中比较它们,它们本质上是相同的,因为 JavaScript 将它们都视为空值。但由于它们是不同的数据类型,如果你显式地比较它们,它们将返回 false 值。

null == undefined; 
// truthy

null === undefined;
// falsey

Enter fullscreen mode Exit fullscreen mode

类比

想象一下,你正在搬家。你买了一堆箱子。你得把东西打包放进那些箱子里。但你整理得乱七八糟,忘了给箱子贴标签。你有5个箱子都装满了东西,还有2个箱子是空的。你想给箱子贴标签,但你已经用胶带把它们粘好了,所以你告诉自己以后再来处理。目前这5个箱子还没有处理完毕。剩下的2个箱子是空的。用代码来解释,应该是这样的:

let fiveBoxes = undefined;
let twoBoxes = null;
Enter fullscreen mode Exit fullscreen mode

五个装满东西的盒子被认为是未定义的,因为它们里面有东西,但你还不知道里面是什么。剩下的两个空盒子意味着里面什么也没有。

Null 与 Undefined

两种数据类型的区别是:

不明确的

  • 已声明
  • 未初始化
  • 已分配引擎

无效的

  • 缺乏
  • 空的/无效的
  • 不存在
  • 用户分配

转到您的控制台并输入:

typeof null
typeof undefined
Enter fullscreen mode Exit fullscreen mode

你得到了什么?

结论

Null 和 undefined 并不相同。了解两者之间的区别非常重要,这样你才能避免代码中出现任何 bug,并清楚地理解它们存在的原因。如果你能在面试中清楚地说明它们的区别,那就太棒了 😉

如果你还有不明白的地方,或者只是想聊聊,欢迎在Twitter上联系我。

文章来源:https://dev.to/za-h-ra/the-difference- Between-null-and-undefined-in-javascript-51gc
PREV
TypeScript 中 Object、{} 和 object 的区别
NEXT
Vite 2.0 正式发布