2017-07-29 13 views
3

私はfooというオブジェクトを持っています。私はそれがプロパティーbarを持っているかどうかをチェックしたいと思います。オブジェクト内のプロパティの存在をチェックするための "typeof"と "in"の比較

if ("bar" in foo) 

はどんな違いがあります:

if (typeof foo.bar !== "undefined") 

またはこの:

私はこれを使用する必要がありますか?

+0

後でもっと明確に見えます。私は違いがないとは思わない。 –

+0

彼らは異なった結果を持っています... – Ahmad

答えて

3

「typeof演算」プロパティがあればtrueを返します「に」、プロパティが存在する場合は気にしたりせず、プロパティが存在するが、「未定義」

ながらの値を有する場合であっても、それは未定義返されますされません存在し、例えば「未定義」

の価値を持って、次はあなたが使用するかによってのいずれかを返します:

let person = { 
    name: 'John', 
    age: undefined 
} 

console.log('age' in person) 
// true 
console.log(typeof person.age !=="undefined") 
//false 
+0

ジョナス、多分年齢の代わりにperson.ageのタイプをチェックするつもりでしたか? – Ahmad

0

あなたの質問は、「オブジェクトのプロパティの存在をチェックするための「最良の」もの」のように、後者("bar" in foo)があなたが探しているものです。

if("bar" in foo)の結果は、「あなたが求めている 'bar'プロパティがfooにある場合にのみこれを行います。

また、typeof foo.bar != "undefined"に行くこともできますが、それは無駄な余計なものになります。

関連する問題