2011-12-21 4 views
2

これは 、非常に簡単なように見えるが、ここで私の質問、javascriptの(objの "key")の反対は何ですか?

if('name' in obj) 

の反対は、それがif(!'name' in obj)またはif("name" not in obj)または何か他のもの何ですされているのでしょうか?

ありがとうございます!

答えて

8

ちょうど括弧でラップ:

if(!('name' in obj)){ 
4

それはこのようになります:

if (!('name' in obj)) { 
    // 'name' not found in obj 
} 
2

"name" in objはちょうどa && b || cのように、ただブール式です。あなたは他の表現のようにそれを否定することができます:!("name" in obj)。あなたがしたいことがあり

if (!('name' in obj)) 
if (Object.keys(obj).indexOf('name')<0) 
1

は次のように、いくつかの方法があります

オブジェクト自身のプロパティをチェック
if (obj.hasOwnProperty(propName)) 

。継承されたプロパティを含めるには、in演算子を使用して他の答えを行います。

+1

'obj.name'がfalseであれば最初のものがfalseを返すことに注意してください。* obj *が* name *というプロパティを持っていると確実には伝えません。 2つ目は継承されたプロパティ(OPが望むものではないかもしれない)を含み、3つ目はES5のサポートに依存します。 – RobG

+0

あなたの最初のオプションはあなたの2番目のオプションと同じではありません: 'obj = {name:null}; !obj ['name'] === true; !(objの 'name')=== false'。 –

+0

私は訂正しました – KooiInc

関連する問題