我有一个对象foo
。我想检查它是否有属性bar
。“typeof”与“in”用于检查对象中是否存在属性
我应该使用这样的:
if (typeof foo.bar !== "undefined")
或者这样:
if ("bar" in foo)
有什么区别?
我有一个对象foo
。我想检查它是否有属性bar
。“typeof”与“in”用于检查对象中是否存在属性
我应该使用这样的:
if (typeof foo.bar !== "undefined")
或者这样:
if ("bar" in foo)
有什么区别?
“typeof运算”不,如果属性存在,关心或不和,即使属性存在,但具有“不确定”
当值,它将返回undefined“在”将返回如果房产真的存在且具有“不确定”
值举一个例子,下面将返回要么假根据真正或在您使用:
let person = {
name: 'John',
age: undefined
}
console.log('age' in person)
// true
console.log(typeof person.age !=="undefined")
//false
乔纳斯,也许你打算检查person.age的类型,而不是年龄? – Ahmad
你的问题就像“哪一个是最好的”来检查对象中是否存在属性“,因此后者("bar" in foo
)就是你要找的。
if("bar" in foo)
的结果是“只有在foo中有'bar'属性时才会这样做”,这就是你所要求的。
你也可以去typeof foo.bar != "undefined"
但它是无用的矫枉过正。
后面看起来更清晰。我认为没有太大的区别。 –
他们有不同的结果... – Ahmad