2012-07-17 10 views
9

私はシンプルtest codeを持っている:複数の引数として機能するように配列を送るには? JavaScriptで

未定義 abままに割り当てられ x()一つとして引数、関数の引数 c送る
function x(a, b) { 
    alert(a); 
    alert(b); 
} 

var c = [1,2]; 
x(c); 

: - 私は複数として配列を送信することができますどのように/

を1つの配列としてではなく、関数への引数?

+0

」を配列が必要ですか?ちょうど 'x(1,2)'を実行してください – TheZ

+3

@TheZこれはちょうど例であると確信しています –

+0

@JuanMendesさて、おそらく 'x(c [0]、c [1])'?私はちょうど必要なものを理解していないと思う。 – TheZ

答えて

16

applyを確認してください。あなたのケースでは

(あなたが関数内でthisを使用していないので)、あなたは、単に "本" を引数としてwindow(またはthis)を渡すことができます。

x.apply(this, [1, 2]); 

例:http://jsfiddle.net/MXNbK/2/

"this"引数としてnullを渡すことについての質問は、 "this"引数のリンク記事のMDNのコメントを参照してください:

方法は、非厳密モードコード内の関数である場合 、ヌル未定義意志がグローバルオブジェクトに置き換えること 、およびプリミティブ値であろう:

この方法によって見られる実際の値ではないかもしれないことに注意してください となります。

+0

ありがとう!それはまさに私が探していたものです。 –

+0

'this'はそのような関数(ality)に何も関係しないので、最初の引数として' null'を渡す方が良いでしょうか? –

+0

あなたはそうかもしれませんが、私は 'this'はまだ関数の中の' window'だと信じています。 –

3

あるいは、ECMAScriptの2015とのブラウザで(またはバベルのtranspilerで)、新しいスプレッド演算子を使用することができます:なぜあなたはドン場合は最初の場所でのアレイでそれらをラップしている

x(...[1, 2]) 
+1

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューから](レビュー/低品質の投稿/ 10184249) – andlrc

+2

@ dev-nullこれは質問に対する有効な回答です。ES6では、[spread operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)はFunction.applyと非常によく似ています。 –

関連する問題