null 和 undefined

JavaScript 有多种方法指明值缺失。当前页面 介绍了两种最常见的方式:nullundefined 数据类型。

null 关键字表示有意定义的缺失值。null 是一个基元,但 typeof 运算符会返回 null 是一个对象。 这是一个错误, 而这是我们特意留下来的 以避免破坏整个网络的预期行为。

typeof null
> object

您可以将变量定义为 null。 同时希望它能反映出在某个时间点 或明确缺失的值。您还可以将 null 值来清除先前的值。

undefined

undefined 是分配给变量的原始值 或者是操作的结果值, 不会返回有意义的值。例如,当您将 浏览器开发者控制台中的函数:

function myFunction() {}
> undefined

当函数的 return 语句时,函数会明确返回 undefined 不返回任何值。

(function() {
   
return;
}());
> undefined

nullundefined 的比较

虽然 undefinednull 在功能上存在一些重叠,但它们有 不同用途。在最严格的意义上,null 表示一个值 被特意定义为“空白”,undefined 表示缺少任何赋值。

nullundefined 大致相等,但并不严格相等。 松散等式运算符将不同类型的运算数强制转换为布尔值 值,使 nullundefinedfalse。严格的等式运算符 会将不同数据类型的运算数视为不相等。

null == undefined
> true

null === undefined
> false

与预留的关键字 null 不同,undefined全局对象。这是一个设计 这一决策是在 JavaScript 开发早期制定的,它允许旧版浏览器 完全覆盖 undefined。在现代浏览器中,仍然可以使用 将 undefined 用作非全局范围内的标识符,替换其 该声明的范围。切勿undefined 用作标识符。它 可能会导致意外行为,并可能会让未来的维护者 代码库

检查您的理解情况

typeof null 会返回什么?

undefined
string
primitive
object