18

在 Javascript 中,我有简单的测试代码

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

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

它将一个参数作为一个参数发送c给函数x(),分配给ab保持未定义:-/

如何将数组作为多个参数发送给函数,而不是作为一个数组?

4

2 回答 2

20

退房apply

在您的情况下(因为您没有this在函数中使用),您可以简单地将window(or this) 作为“this”参数传递:

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

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

根据您关于null作为“this”参数传递的问题,请参阅 MDN 在链接文章中关于“this”参数的评论:

请注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,则 null 和 undefined 将被替换为全局 object,原始值将被装箱。

于 2012-07-17T23:37:52.700 回答
16

或者,在带有 ECMAScript 2015(或带有 Babel 转译器)的浏览器中,您可以使用新的扩展运算符:

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