繁体   English   中英

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

[英]“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

例如,以下将返回truefalse,具体取决于您使用的是:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM