2017-04-07 21 views
1

私はオブジェクトtestObject = {a: undefined}を持っていると言います。私がconsole.log(testObject.a)なら、私は定義されていません。しかし、私が存在しないconsole.log(testObject.b)と同じことが起こります。 JavaScriptでabを区別する方法はありますか?私は大部分が好奇心から尋ねる、私はユースケースを持っていない。あなたが実際inオペレータ未設定のプロパティと未定義のプロパティを区別する方法はありますか?

if(a in testObject) { 
    //yes .. now check whether it is undefined or not 
} 
+1

「Object.keys(testObject)」を使用して答えを見つけました。 – Aerovistae

+0

あなたは 'undefined'と' null'を探していると思います – JustARandomProgrammer

+0

いいえ、私はありません。私はあなたにその印象を与えるものがわからない。私はJavaScriptには新しくない。 – Aerovistae

答えて

3

hasOwnProperty()方法を使用してチェックする前に、余分な条件と区別することができる

+0

ポインタだけです。変更を加えた理由について説明してください。 「これを試してください」と言っても、いい答えではありません – Rajesh

3

は、オブジェクトが(継承されない)自身のプロパティとして指定された性質を持っているかどうかを示すブール値を返します。与えられた場合には

- あなたが示しように、これはオブジェクトだけのために働くことを

testObject = {a: undefined}; 

    testObject.hasOwnProperty('a') //true 
    testObject.hasOwnProperty('b') //false 
+0

'in'もプロトタイプのプロパティを渡し、列挙できないプロパティの場合は失敗します – Rajesh

2
testObject.hasOwnProperty('a') 

注意。プロトタイプから継承されたプロパティはこのテストに合格しません(これはhasOwnPropertyのポイントです)。

関連する問題