2012-01-14 7 views
0

JavaScriptでは、渡された2つの変数が同じデータ型(文字列、整数、ブール値など)であるかどうかを判断する関数を記述したいと思います。しかし、2つの変数を比較する方法はありません変数の中に格納されているVALUESではなくDATA TYPESの項を使用します。あなたが​​を探しているJavaScriptで変数の型を区別するにはどうすればよいですか?

答えて

1

typeof演算子を使用して、変数のデータ型を調べることができます。だから、同じタイプ(必ずしも同じ値)のための2つの変数をテストするために、あなたは

if(typeof a == typeof b) { /* same type */ } 
0

は)=事前にありがとうございます。

0

使用typeof演算を()

var test = true, 
    test2 = "string"; 

if (typeof(test) === typeof(test2)) {} 
3

示唆されているようにあなたがtypeofを使用することができますが、それは完璧ではない使用することができます。配列と日付インスタンスはどちらも "オブジェクト"型であるとみなされます。タイプによって比較する

別の不完全な方法はこれです:

function sameTypes() { 
    var tp = null, ts = Object.prototype.toString; 
    if (arguments.length === 0) return true; // or false if you prefer 
    tp = ts.call(arguments[0]); 
    for (var i = 1; i < arguments.length; ++i) 
    if (tp !== ts.call(arguments[i])) return false; 
    return true; 
} 

あなたは値(私が推測するだけでなく1以上)をして呼び出した結果ならば、それはtrueを返します二つ以上のその関数を渡すことができますObjectプロトタイプの "toString"関数は、すべて同じです。これはプリミティブをオブジェクトに昇格させるため完璧ではないので、文字列定数はStringインスタンスと同じ型を持つように見えます。

関連する問題