Javascript - 将定义的变量检测为未定义

时间:2015-09-24 16:42:59

标签: javascript node.js

例如:

var myObj = {
    yes: undefined
}

console.log(typeof myObj.yes === 'undefined') //--> true
console.log(typeof myObj.nop === 'undefined') //--> true too

有没有办法检测myObj.nop是否未定义为未定义?

3 个答案:

答案 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不是单引号。可能这会给你正确的方向。