2012-07-17 41 views
9

在Javascript中我有簡單的test code如何發送數組作爲多個參數?

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

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

其發送參數c運作x()作爲一個參數,分配給ab撐未定義: -/

我怎麼能發送陣列爲多個一個函數的參數,而不是一個數組?

+0

你爲什麼要包裝他們在一個數組中的第一個地方,如果你不」你想要一個數組?只要做'x(1,2)' – TheZ 2012-07-17 23:38:56

+3

@TheZ我敢肯定這只是一個例子 – 2012-07-17 23:39:20

+0

@JuanMendes好吧,那麼也許'x(c [0],c [1])'?我想我只是不明白需要什麼。 – TheZ 2012-07-17 23:40:05

回答

16

結賬apply

在你的情況(因爲你沒有在功能使用this),你可以簡單地通過window(或this)爲 「本」 的說法:

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

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

有關將null作爲「this」參數傳遞的問題,請參閱MDN在關於「this」參數的鏈接文章中的評論:

注意,這可能不是通過該方法觀察到的實際值:如果 方法是在非嚴格模式代碼,null和undefined意願的函數 與全局對象代替,並且原始值將裝箱即成 。

+0

謝謝!這正是我所期待的。 – 2012-07-17 23:46:30

+0

作爲第一個參數傳遞'null'不會更好,因爲'this'與這樣的函數(ality)沒有任何關係......? – 2012-07-17 23:47:34

+0

你可以,但我相信'this'仍然是函數內的'window'。 – 2012-07-17 23:48:40

3

或者,在ECMAScript中2015年的瀏覽器(或用巴貝爾transpiler),你可以使用新的傳播經營者:

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

這並不能解答問題。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/10184249) – andlrc 2015-11-12 17:24:03

+2

@ dev-null這是問題的有效答案。在ES6中[擴展運算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)非常類似於Function.apply。 – 2015-11-12 20:10:29

相關問題