JavaScript 有多种方法指明值缺失。当前页面
介绍了两种最常见的方式:null
和 undefined
数据类型。
null
null
关键字表示有意定义的缺失值。null
是一个基元,但 typeof
运算符会返回 null
是一个对象。
这是一个错误,
而这是我们特意留下来的
以避免破坏整个网络的预期行为。
typeof null
> object
您可以将变量定义为 null
。
同时希望它能反映出在某个时间点
或明确缺失的值。您还可以将 null
值来清除先前的值。
undefined
undefined
是分配给变量的原始值
或者是操作的结果值,
不会返回有意义的值。例如,当您将
浏览器开发者控制台中的函数:
function myFunction() {}
> undefined
当函数的 return
语句时,函数会明确返回 undefined
不返回任何值。
(function() {
return;
}());
> undefined
null
与 undefined
的比较
虽然 undefined
和 null
在功能上存在一些重叠,但它们有
不同用途。在最严格的意义上,null
表示一个值
被特意定义为“空白”,undefined
表示缺少任何赋值。
null
和 undefined
大致相等,但并不严格相等。
松散等式运算符将不同类型的运算数强制转换为布尔值
值,使 null
和 undefined
都 false
。严格的等式运算符
会将不同数据类型的运算数视为不相等。
null == undefined
> true
null === undefined
> false
与预留的关键字 null
不同,undefined
是
全局对象。这是一个设计
这一决策是在 JavaScript 开发早期制定的,它允许旧版浏览器
完全覆盖 undefined
。在现代浏览器中,仍然可以使用
将 undefined
用作非全局范围内的标识符,替换其
该声明的范围。切勿将 undefined
用作标识符。它
可能会导致意外行为,并可能会让未来的维护者
代码库
检查您的理解情况
typeof null
会返回什么?
undefined
string
primitive
object