我们写在 JavaScript 代码中的 undefined(它不是字面量), 并不是 undefined 值本身. 而是一个局部变量或是全局对象的一个属性. 但大部分时候它们的值是 undefined.
NaN 和 Infinity 也同理.

window.undefined === undefined;    // undefined 是一个全局变量.
// true

{
    let undefined;                    // undefined 不是关键字也不是字面量.
    window.undefined === undefined;   // 它们的值都是 undefined.
}
// true

{
    let undefined = 1;
    window.undefined === undefined;   // 局部变量 undefined 的值为1, 所以不相等.
}
// false

window.undefined = 1;
{
    let undefined;
    window.undefined === undefined;   // 全局变量 undefined 的值不能改变, 始终为 undefined, 所以相等.
}
// true

JayLiu
15 声望1 粉丝

折腾方向: 数据可视化, 前端架构, 前端微服务.