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