2011-12-21 15 views
1

申し訳ありません、簡単な質問です。私はこの機能を持っています:同じ関数引数は異なるデータ型を受け入れることができますか?

function(var1){ 
    var myString =var1; 
    // myString is parsed for integers 
} 

いつも引数を文字列として呼び出す必要がありますか?例えば

安全に混和して一致させることはできますか?例えば

function(23); 
function("string with number 23"); 
+1

Javascriptが動的型付けされた...多分時間を:あなただけの予定がある場合は

私はこれが何をすべき文字列や数値を渡すにhere

しかし見つけることができますクロックフォードのtypeof演算関数を使用します良い本から始める? –

+0

機能に何が含まれているか教えてください。 – kapa

+0

@Kerrek:私が読んだ最後のオンラインガイドは、正しいデータ型を渡すと言いました。私はそれが言語によって要求されるよりもむしろ良い練習であると思っています、あなたが与える理由。しかし私は確かめる必要があった。 –

答えて

1

を使用することができます文字列として番号を渡した場合。 データタイプによって異なる動作が必要な場合は、instanceofを使用できます。

function f(var1) { 
    if(var1 instanceof String) { 
     // handle strings 
    } else if(var1 instanceof Object) { 
     // handle objects 
    } else if(var1 instanceof Date) { 
     // handle dates 
    } 
} 

これは、入力データを検証/フィルタリングするためにも使用することができる:このように

更新:instanceoftypeofの違いについては、@ jakeclarksonのコメントにご注意ください。

+0

ありがとうございます。パーフェクトです。私はtypeOfを使用するつもりだったが、instanceOfは良く見える。 –

+3

これは 'String'リテラルでは機能しないことに注意してください。'' string of "instanceof String'は' false'を返しますが、 'new String(" string ")instanceof String'は' true'を返します。ここには[例](http://jsfiddle.net/jakeclarkson/32shh/)があります。 – jabclab

+0

+1〜@ jakeclarkson。 'instanceof'と' typeof'は似ていますが同じではありません。その使用方法は、プロジェクトのアーキテクチャと問題の種類によって異なります。最初の返信でそのコメントを参照します。 – Minras

1

任意のデータ型を関数に渡すことができます。あなたがどのように引数を使用するかは重要です。

+0

多くのありがとう。私はちょうど確かめる必要があった - すべてのブラウザが同じではないので。 –

1

整数パーサーが混合を処理するように設定されている限り、ミックスして一致させることができます。

1

数字をintにして、何らかの数学をスピーチマークに入れないようにするには、どちらの方法でも使用できます。

あなたはオールウェイズJavascriptが動的型付け言語であるとはい、あなたは異なるデータ型を渡すことができ

parseInt("string"); 
1

短い答え:YES

長い答え:型チェックJavaScriptで本当の痛みです。これは、配列とオブジェクトを区別しようとすると難しくなります。

function (var1) { 
    if (typeof var1 === "number"){ 
    //treat it like a number 
    } else if (typeof var1 === "string") { 
    //try to parse it 
    } else { 
    //Its neither a string nor a number 
    } 
} 
関連する問題