JavaScript 标准内置对象 undefined,判断对象是否为空

Lasted 2020-11-25 18:26:01

undefined 是全局对象的一个属性。它是全局作用域的一个变量。undefined 的最初值就是原始数据类型 undefined,表示一个变量没有赋值。

判断变量是否定义

需要使用严格相等操作符(===)而不是标准相等操作符(==),因为 === 会严格判断双方的类型、值等是否相等。而 == 会判断 null 等同于 undefined。

let x;

if (x === undefined) {
// 执行这些语句
} else {
// 这些语句不会被执行
}

通过字符串判断变量是否定义,如下所示:

let x;

if(typeof x === 'undefined') {
    // 执行这些语句
}
建议使用第二种方法,因为 typeof 不会在一个变量没有被声明的时候抛出一个错误。
// 这里没有声明y
if(typeof y === 'undefined') {       // 没有错误,执行结果为true
   console.log("y is " + typeof y )  // y is undefined
}

if(y === undefined) {                // ReferenceError: y is not defined

}

使用下面的代码判断对象中是否存在变量,如下所示:

if ('x' in window) {
  // 只有x被全局性的定义 才会这行这些语句
}