JavaScript 中 Null 和 Undefined 的区别
每当我遇到null
或时undefined
,我都会对 JavaScript 中每种数据类型的使用方式感到非常困惑。
我的意思是,它们有什么区别?它们不是都表达了“无”的概念吗?

我决定做一些研究,深入了解这两种数据类型。掌握这些知识很有帮助,这样你就能在需要的时候正确地使用它们。我还发现,有时面试中会提到null
和之间的区别undefined
。👀
介绍
JavaScript 有7 种原始数据类型,其中两种是null
和undefined
。
Null是一个赋值,这意味着null
当你希望变量为空时,你可以将其赋值给任何变量。它故意留空,并指向一个空值。
let hasCat = null;
// nullish
Undefined是一个存在但尚未初始化的变量。这意味着稍后我可以返回该变量并为其赋一个之前没有的值。所以,如果我声明一个没有值的变量,它就被视为未初始化。
let currentJob;
// undefined
我对它们的理解是:是的,它们非常相似,因为它们都没有你试图访问的值。如果你在 JavaScript 中比较它们,它们本质上是相同的,因为 JavaScript 将它们都视为空值。但由于它们是不同的数据类型,如果你显式地比较它们,它们将返回 false 值。
null == undefined;
// truthy
null === undefined;
// falsey
类比
想象一下,你正在搬家。你买了一堆箱子。你得把东西打包放进那些箱子里。但你整理得乱七八糟,忘了给箱子贴标签。你有5个箱子都装满了东西,还有2个箱子是空的。你想给箱子贴标签,但你已经用胶带把它们粘好了,所以你告诉自己以后再来处理。目前这5个箱子还没有处理完毕。剩下的2个箱子是空的。用代码来解释,应该是这样的:
let fiveBoxes = undefined;
let twoBoxes = null;
五个装满东西的盒子被认为是未定义的,因为它们里面有东西,但你还不知道里面是什么。剩下的两个空盒子意味着里面什么也没有。
Null 与 Undefined
两种数据类型的区别是:
不明确的
- 已声明
- 未初始化
- 已分配引擎
无效的
- 缺乏
- 空的/无效的
- 不存在
- 用户分配
转到您的控制台并输入:
typeof null
typeof undefined
你得到了什么?
结论
Null 和 undefined 并不相同。了解两者之间的区别非常重要,这样你才能避免代码中出现任何 bug,并清楚地理解它们存在的原因。如果你能在面试中清楚地说明它们的区别,那就太棒了 😉
如果你还有不明白的地方,或者只是想聊聊,欢迎在Twitter上联系我。
文章来源:https://dev.to/za-h-ra/the-difference- Between-null-and-undefined-in-javascript-51gc