2011-07-09 5 views
1

関数.concat()では、任意の数の引数を渡すことができます。String.concat()がjavascriptでどのように実装されていますか?

私はC++で関数のオーバーロードを理解していますが、JavaScriptで引数が不明な関数をどのように実装するのか分かりません。

関数に任意の数の引数を実装するにはどうすればよいですか?

+0

あなたの質問を詳しく説明できますか? –

+0

@mahesh、私の編集を参照してください。 – Blender

+0

一言、私はポストのスペルミスを修正するための最初の投稿を無駄にしました。そして今、Blenderはその編集を取り除きました。土曜日の朝は良いスタートではありません... – mplungjan

答えて

1

javascriptでは、関数に渡されるすべての引数の配列である "arguments"という組み込みパラメータを使用します。配列の引数[0]、arguments [1]などからarguments.lengthと各値を取得できます。すべての関数には、使用できる組み込み変数があります。

たとえば、渡されたすべての文字列を連結する関数。

function concatAll() { 
    var str; 
    for (var i = 0 ; i < arguments.length; i++) { 
     str += arguments[i]; 
    } 
    return(str); 
} 

var f = concatAll("abc", "def", "ghi"); // "abcdefghi" 
1

このように -

function f() 
{ 
    var i; 

    for(i=0; i<arguments.length; i++) 
    { 
     alert((i+1) + "th argument: " + arguments[i]); 
    } 
} 

JavaScriptですべての関数は、関数に渡されたすべての関数の引数を含む配列であるargumentsと呼ばれる組み込みのパラメータを持っています。この配列を繰り返し処理すれば、関数のすべての引数にアクセスすることができます。

例として、特定のフィールドが空でない場合に、特定のボタンを有効または無効にするために使用される関数を作成しました。

function toggleButton()  // I used jquery inside this function 
{ 
    var i; 
    var last = arguments.length-1; 

    for(i=0; i<last; i++) 
    { 
     if($.trim($(arguments[i]).val()) === "") 
      return false; 
    } 

    $(arguments[last]).toggle(); 

    return true; 
} 

と、このように、この関数を呼び出した - - 私はこの機能をこのように書いているので、両方のケースで、私は変数の数を渡した

toggleButton("#idOfFirstField", "#idOfSecondField", "#idOfThirdField", "#idOfButtonToToggle"); 

-

toggleButton("#idOfFirstField", "#idOfSecondField", "#idOfButtonToToggle"); 

または、このようなこれらのフィールドが空であるかどうかをチェックしました。すべてに価値がある場合は、ボタンの表示を切り替えました。

このよう
0

からarguments objectすべての機能を用意して使用します。あなたが正式に関数内で宣言されていないアクセスパラメータにarguments配列を使用することができます

function someFunction() { 
    for (var i=0,n=arguments.length;i<n;i++) { 
    // do something with arguments[i]; 
    } 
} 
0

function printArguments() { 
    for (i = 0; i < printArguments.arguments.length; i++) 
    document.writeln(printArguments.arguments[i] + '<br />'); 
} 

printArguments(1, 2, 3, 'etc'); 

出典:http://www.irt.org/articles/js008/

+0

母はあなたが遅いですが、少なくとも私はJS編集者だったサイトの投稿です。 1997年のコードがまだ動作しているのを見てよかったです – mplungjan

0

任意のjavascript関数は任意の数の引数を持つことができます。関数の実行が番号または特定の性質に依存する場合は、argumentsオブジェクトをチェックする必要があります。このオブジェクトは、他のオブジェクトと同様に 'Arraylike'オブジェクトのように反復処理することができます。


などのように、引数を実際の配列に変換すると便利な場合があります。

興味のあるメソッドオーバーロードに関するJohn Resigsのページのblog entryです。

関連する問題