将未知数量的参数传递给JS函数[重复]

时间:2022-07-25 18:00:25

This question already has an answer here:

这个问题在这里已有答案:

A pattern in some javascript libraries is to be able to pass any number of parameters to a function:

某些javascript库中的模式是能够将任意数量的参数传递给函数:

functiona(param1)
functiona(param1, param2, param3)
functiona(param1, param2)

I have an array of unknown length, and I'd like to pass all the array items as parameters to a function like functiona(). Is this possible? If so, what is the syntax for doing this?

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

3 个解决方案

#1


13  

What you want is probably Function.prototype.apply().

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

Usage:

用法:

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

As others noted, functiona declaration may use arguments, e.g.:

正如其他人所指出的,功能声明可以使用参数,例如:

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

But it can use any number of normal parameters as well:

但它也可以使用任意数量的普通参数:

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

#2


4  

Use arguments:

使用参数:

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

arguments对象是一个类似于Array的对象,对应于传递给函数的参数。

#3


2  

Yep, all parameters passed to a JavaScript function can be accessed using the parameters array within the function.

是的,可以使用函数中的参数数组访问传递给JavaScript函数的所有参数。

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

foo('bar', 'baz');

#1


13  

What you want is probably Function.prototype.apply().

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

Usage:

用法:

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

As others noted, functiona declaration may use arguments, e.g.:

正如其他人所指出的,功能声明可以使用参数,例如:

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

But it can use any number of normal parameters as well:

但它也可以使用任意数量的普通参数:

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

#2


4  

Use arguments:

使用参数:

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

arguments对象是一个类似于Array的对象,对应于传递给函数的参数。

#3


2  

Yep, all parameters passed to a JavaScript function can be accessed using the parameters array within the function.

是的,可以使用函数中的参数数组访问传递给JavaScript函数的所有参数。

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

foo('bar', 'baz');