扫码一下
查看教程更方便
要检查对象属性是否为 undefined,需要在对象属性上使用 typeof
运算符。 typeof
运算符返回一个字符串,指示值的类型。 如果对象上不存在该属性,则运算符返回字符串 "undefined" 。
const obj = {name: 'Tom'};
if (typeof obj.age === 'undefined') {
console.log(' age 属性未定义');
} else {
console.log(' age 属性定义');
}
我们使用 typeof
运算符来检查对象上的 age 属性是否未定义。
typeof
运算符返回一个字符串,该字符串指示特定值的类型。 这里有些例子。
console.log(typeof ''); // 'string'
console.log(typeof undefined); // 'undefined'
console.log(typeof 5); // 'number'
console.log(typeof {}); // 'object'
console.log(typeof []); // 'object'
请注意,如果对象包含 age 属性并且其值设置为未定义,则我们的 if
语句中的条件也将得到满足。
const obj = {name: 'Tom', age: undefined};
if (typeof obj.age === 'undefined') {
console.log('age 属性未定义');
} else {
console.log('age 属性定义');
}
这在大多数情况下就足够了,但是如果我们想检查该属性是否在对象上根本不存在,我们可以使用 Object.hasOwnProperty
方法。
const obj = {name: 'Tom', age: undefined};
if (!obj.hasOwnProperty('age')) {
console.log("对象没有age属性");
} else {
console.log("对象存在age属性");
}
如果对象具有属性,则 hasOwnProperty
方法返回 true,否则返回 false。
在示例中,我们的 else 块运行,因为属性 age 存在于对象上,即使它的值未定义。
我们将很少(如果有的话)看到应用程序中使用的
hasOwnProperty
方法。 对于大多数用例,第一种方法效果很好。
还有另一种更简洁的方法。
要检查对象属性是否未定义,可以使用严格相等 (===)
运算符将对象属性与 undefined
进行比较。 如果属性未定义,则严格相等运算符将返回 true,否则返回 false。
const obj = {name: 'Tom'};
if (obj.age === undefined) {
console.log('age 属性未定义');
} else {
console.log('age 属性定义');
}
这种方法实现了相同的目标,但是我们直接检查属性是否等于 undefined
,而不是检查其类型。
严格相等 (===)
运算符检查左侧和右侧的值是否相等,如果相等则返回 true,否则返回 false。
这里有些例子。
console.log(undefined === undefined); // true
console.log(null === undefined); // false
console.log('' === undefined); // false
console.log('5' === 5); // false
使用严格相等 (===)
运算符时,任何不同类型的值都不相等。