2012-03-23 63 views

答えて

3

それはパラメータ名についての情報を保持していないように、可変引数を使用して同じ機能を実現する方法はありません。これを回避するために、複数のパラメータを使用することから、メンバーの実際のパラメータ値を保持する1つの複合パラメータオブジェクトに切り替えることができます。

<script> 
    function abc(params) { 
    var x = params.x; 
    var y = params["y"]; 
    } 

    abc({ x: 10, y: "hello" }); 
</script> 

こうしかし、あなたは、関数のシグネチャでコードの可読性の一部を失う、プラスあなたは、呼び出し側のparamの名前を提供する必要があります。

+0

ああ、私はそれが好きです。ねえ!引き続き、arguments [0] .params.x? –

+0

あなたはピーターを知っています、それは非常に良い説明でした。 –

+0

Pedro:arguments [0] .xは私が書いたとおりに動作するだろう –

1

arguments疑似変数を参照できますが、引数は名前ではなく数値でインデックス付けされます。 argumentsを直接ぶつけないようにすることをお勧めします。一般的なイディオムは、実際の配列に変換することです:

var args = Array.slice.call(arguments, 0); 
+0

私はJavaScriptを1年以上勉強してきましたが、この共通のイディオムを覚えていません。男、私はもっと本を打つ必要があります! –

+0

だから私はそれをargs ["x"]として参照するでしょうか? –

+0

@Pointy、つまり 'arguments [0]'を直接参照するだけではどうですか? – Henry

1

私は恐れていません。 xまたはarguments[0]を明示的に使用できますが、これ以上は使用できません。ほかの人から指摘されていない限り、オブジェクトを渡します。

関連する問題