18

Javascriptには簡単なテストコードがあります:

function x(a, b) {
  alert(a);
  alert(b);
}

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

c関数に引数を1つの引数として送信しx()、割り当てられab未定義のままになります:-/

配列を 1 つの配列としてではなく、複数の引数として関数に送信するにはどうすればよいですか?

4

2 に答える 2

20

チェックアウトしてくださいapply

あなたの場合(this関数で使用していないため)、単に「this」引数としてwindow(または)を渡すことができます:this

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

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

「this」引数として渡すことについての質問ごとにnull、「this」引数に関するリンクされた記事の MDN のコメントを参照してください。

これは、メソッドによって表示される実際の値ではない可能性があることに注意してください。メソッドが非厳密モード コードの関数である場合、 null および undefined はグローバル object に置き換えられ、プリミティブ値はボックス化されます。

于 2012-07-17T23:37:52.700 に答える
16

または、ECMAScript 2015 (または Babel トランスパイラー) を搭載したブラウザーでは、新しいスプレッド演算子を使用できます。

x(...[1, 2])
于 2015-11-11T19:56:59.260 に答える