用于检查对象中属性的存在的“typeof”与“in”

时间:2017-07-29 11:41:18

标签: javascript object properties typeof

我有一个名为foo的对象。我想检查它是否具有属性bar

我应该用这个:

if (typeof foo.bar !== "undefined")

或者这个:

if ("bar" in foo)

有什么不同吗?

2 个答案:

答案 0 :(得分:3)

"的typeof"并不关心该属性是否存在,即使该属性存在但它的值仍为未定义,但其值为" undefined"

同时," in"如果属性存在且值为" undefined"

,则返回true

例如,以下内容将返回 true false ,具体取决于您使用的内容:

let person = {
  name: 'John',
  age: undefined
}

console.log('age' in person)
// true
console.log(typeof person.age !=="undefined") 
//false

答案 1 :(得分:0)

你的问题就像"哪一个是最好的'用于检查对象中属性的存在,因此后者(MyClass1::MyClass1() : object(1000) { } )是您正在寻找的。

"bar" in foo的结果是"只有在有' bar' foo"这就是你要求的。

你也可以选择if("bar" in foo),但这样做无用了。