簡體   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