如何发送数组作为多个参数?

Ωme*_*ega 11 javascript

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

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

var c = [1,2];
x(c);
Run Code Online (Sandbox Code Playgroud)

其发送的参数c的功能x()作为一个参数,分配给ab撑未定义: - /

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

And*_*ker 17

退房apply.

在你的情况下(因为你没有this在函数中使用),你可以简单地传递window(或this)作为"this"参数:

x.apply(this, [1, 2]);
Run Code Online (Sandbox Code Playgroud)

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

根据您关于传递null为"this"参数的问题,请参阅MDN在"this"参数的链接文章中的注释:

请注意,这可能不是方法看到的实际值:如果方法是非严格模式代码中的函数,则null和undefined将替换为全局对象,并且原始值将被加框.


Luk*_*oda 9

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

x(...[1, 2])
Run Code Online (Sandbox Code Playgroud)

  • @ dev-null这是对这个问题的有效答案.在ES6中[扩展运算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)与Function.apply非常相似. (5认同)