检查JavaScript中的对象属性是否为最佳方法是undefined什么?
undefined
检查属性值是否为特殊值的通常方法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中,该属性为只读。
foo === undefined
但是,令人惊讶的是,在现代JavaScript中,“未定义”仍然不是关键字,因此函数内的变量可以命名为“未定义”并掩盖了全局属性。
如果您担心这种情况(不太可能),可以使用void运算符获取特殊undefined值本身:
if(myVariable === void 0) { alert("myVariable is the special value `undefined`"); }