[英]“typeof” versus “in” for checking the presence of a property in an object
我有一个名为foo
的对象。 我想检查它是否有属性bar
。
我应该用这个:
if (typeof foo.bar !== "undefined")
或这个:
if ("bar" in foo)
有什么区别吗?
“typeof”并不关心属性是否存在,即使属性存在但值为“undefined”,它也将返回undefined
而如果属性存在且值为“undefined”,则“in”将返回true
例如,以下将返回true或false,具体取决于您使用的是:
let person = {
name: 'John',
age: undefined
}
console.log('age' in person)
// true
console.log(typeof person.age !=="undefined")
//false
你的问题就像“检查对象中属性的存在是哪一个'最好'”,因此后者( "bar" in foo
)就是你要找的东西。
if("bar" in foo)
是“只有if("bar" in foo)
有'bar'属性时才执行此操作”,这就是您所要求的。
你也可以去找typeof foo.bar != "undefined"
但这样就没用了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.