2016-05-15 4 views
1

私はtという名前の変数を持っています。idという名前の変数プロパティがあるかどうかを確認するにはどうすればいいですか?

いくつかの倍のいくつかのオブジェクトと等しい変数:

var t = {id:2 Name:"Mike" }; 

そして、この変数が含まれているかもしれないいくつかの回のみstring.Likeこの:私は変数があるかどうかを確認する必要がある時点で

var t = "someString"; 

オブジェクトにidという名前のプロパティが含まれている場合

変数がオブジェクトであり、プロパティがidであるかどうかを確認するにはどうすればよいですか?

答えて

3

使用typeofhasOwnProperty

if(typeof t == 'object' && t.hasOwnProperty('id')) { 
    //your code for using t.id 
} 
4

あなたが&&(と)オペレータ

if (t && t.id && td.id === "blah") 

も短く使用することができます。

if (t && t.id === "blah") 
+0

初バリアントを使用する理由はありますか? –

+0

この文脈では、いいえ... 't.id ==='でチョークするものは、最初のチェックを過ぎることはありません。 –

1

をあなたはtoString.call(value) === '[object Object]'を使用して変数を確認することができますし、 toString.call(value) === '[object String]'

var t = { 
 
    id: 2, 
 
    Name: "Mike" 
 
}; 
 

 
function isObject(value, property) { 
 
    return value !== null && toString.call(value) === '[object Object]' && value.hasOwnProperty(property); 
 
} 
 

 
function isString(value) { 
 
    return value !== null && toString.call(value) === '[object String]'; 
 
} 
 

 
document.write("isObject : " + isObject(t, 'id') + " | " + "isString : " + isString(t) + "<br>"); 
 

 
var t = "blabla"; 
 

 
document.write("isObject : " + isObject(t, 'id') + " | " + "isString : " + isString(t));

関連する問題