关于javascript:向JS函数传递未知数量的参数

Pass unknown number of parameters to JS function

本问题已经有最佳答案,请猛点这里访问。

一些JavaScript库中的模式能够向函数传递任意数量的参数:

1
2
3
functiona(param1)
functiona(param1, param2, param3)
functiona(param1, param2)

我有一个长度未知的数组,我想将所有数组项作为参数传递给像functiona()这样的函数。这有可能吗?如果是这样,执行此操作的语法是什么?


你想要的可能是Function.prototype.apply()

用途:

1
2
var params = [param1, param2, param3];
functiona.apply(this, params);

如其他人所述,functiona声明可以使用arguments,例如:

1
2
3
4
5
function functiona()
{
    var param1 = this.arguments[0];
    var param2 = this.arguments[1];
}

但它也可以使用任意数量的正常参数:

1
2
3
4
5
function foo(x, y)
{
    console.log(x);
}
foo.apply(this, [10, 0, null]); // outputs 10


使用arguments

The arguments object is an Array-like object corresponding to the
arguments passed to a function.


是的,可以使用函数内的arguments数组访问传递给javascript函数的所有参数。

1
2
3
4
5
6
function foo () {
    console.log(arguments[0]); // -> bar
    console.log(arguments[1]); // -> baz
}

foo('bar', 'baz');