一尘不染

检测未定义的对象属性

javascript

检查 JavaScript 中的对象属性是否未定义的最佳方法是什么?


阅读 167

收藏
2022-01-21

共1个答案

一尘不染

检查属性值是否为特殊值的常用方法undefined是:

if(o.myProperty === undefined) {
  alert("myProperty value is the special value `undefined`");
}

要检查一个对象是否实际上没有这样的属性,因此undefined当您尝试访问它时会默认返回:

if(!o.hasOwnProperty('myProperty')) {
  alert("myProperty does not exist");
}

检查与标识符关联的值是否是特殊值undefined或者该标识符是否尚未声明。注意:此方法是引用未声明(注意:不同于具有 值undefined)标识符而没有早期错误的唯一方法:

if(typeof myVariable === 'undefined') {
  alert('myVariable is either the special value `undefined`, or it has not been declared');
}

在 ECMAScript 5 之前的 JavaScript 版本中,全局对象上名为“undefined”的属性是可写的,因此foo === undefined如果不小心重新定义了一个简单的检查,它可能会出现意外行为。在现代 JavaScript 中,该属性是只读的。

但是,在现代 JavaScript 中,“未定义”不是关键字,因此函数内部的变量可以命名为“未定义”并隐藏全局属性。

如果您担心这种(不太可能的)边缘情况,您可以使用void 运算符来获取特殊undefined值本身:

if(myVariable === void 0) {
  alert("myVariable is the special value `undefined`");
}
2022-01-21