在Javascript中我有簡單的test code:如何發送數組作爲多個參數?
function x(a, b) {
alert(a);
alert(b);
}
var c = [1,2];
x(c);
其發送參數c
運作x()
作爲一個參數,分配給a
和b
撐未定義: -/
我怎麼能發送陣列爲多個一個函數的參數,而不是一個數組?
在Javascript中我有簡單的test code:如何發送數組作爲多個參數?
function x(a, b) {
alert(a);
alert(b);
}
var c = [1,2];
x(c);
其發送參數c
運作x()
作爲一個參數,分配給a
和b
撐未定義: -/
我怎麼能發送陣列爲多個一個函數的參數,而不是一個數組?
結賬apply
。
在你的情況(因爲你沒有在功能使用this
),你可以簡單地通過window
(或this
)爲 「本」 的說法:
x.apply(this, [1, 2]);
例子:http://jsfiddle.net/MXNbK/2/
有關將null
作爲「this」參數傳遞的問題,請參閱MDN在關於「this」參數的鏈接文章中的評論:
注意,這可能不是通過該方法觀察到的實際值:如果 方法是在非嚴格模式代碼,null和undefined意願的函數 與全局對象代替,並且原始值將裝箱即成 。
謝謝!這正是我所期待的。 – 2012-07-17 23:46:30
作爲第一個參數傳遞'null'不會更好,因爲'this'與這樣的函數(ality)沒有任何關係......? – 2012-07-17 23:47:34
你可以,但我相信'this'仍然是函數內的'window'。 – 2012-07-17 23:48:40
或者,在ECMAScript中2015年的瀏覽器(或用巴貝爾transpiler),你可以使用新的傳播經營者:
x(...[1, 2])
這並不能解答問題。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/10184249) – andlrc 2015-11-12 17:24:03
@ dev-null這是問題的有效答案。在ES6中[擴展運算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)非常類似於Function.apply。 – 2015-11-12 20:10:29
你爲什麼要包裝他們在一個數組中的第一個地方,如果你不」你想要一個數組?只要做'x(1,2)' – TheZ 2012-07-17 23:38:56
@TheZ我敢肯定這只是一個例子 – 2012-07-17 23:39:20
@JuanMendes好吧,那麼也許'x(c [0],c [1])'?我想我只是不明白需要什麼。 – TheZ 2012-07-17 23:40:05