例如:
var myObj = {
yes: undefined
}
console.log(typeof myObj.yes === 'undefined') //--> true
console.log(typeof myObj.nop === 'undefined') //--> true too
有没有办法检测myObj.nop是否未定义为未定义?
答案 0 :(得分:5)
您可以使用in
:
if('yes' in myObj) {
// then we know the key exists, even if its value is undefined
}
请记住,这也会检查对象原型中的属性,这在您的情况下可能很好,但是如果您只想检查直接在该特定对象上设置的属性< / em>,您可以使用Object.prototype.hasOwnProperty
:
if(myObj.hasOwnProperty('yes')) {
// then it exists on that object
}
这里有a good article关于两者之间的区别。
答案 1 :(得分:1)
使用hasOwnProperty
。
myObj.hasOwnProperty('yes'); // returns true
myObj.hasOwnProperty('nop'); // returns false
答案 2 :(得分:0)
var myObj = {
yes: undefined
}
console.log( myObj.yes === undefined); // gives true
和
var myObj = {
yes: 'any value here'
}
console.log( myObj.yes === undefined); // gives false
这里要注意的一点是undefined不是单引号。可能这会给你正确的方向。