Передайте неизвестное количество параметров функции JS

Образец в некоторых библиотеках javascript должен иметь возможность передавать любое количество параметров функции:

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

У меня есть массив неизвестной длины, и я бы хотел передать все элементы массива в качестве параметров для функции типа functiona(). Это возможно? Если да, то в чем синтаксис для этого?

Ответ 1

Вероятно, вы хотите Function.prototype.apply().

Использование:

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

Как отмечали другие, декларация functiona может использовать arguments, например:

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

Но он может также использовать любое количество нормальных параметров:

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

Ответ 2

Используйте arguments:

Объект arguments представляет собой объект, подобный массиву, соответствующий аргументы передаются функции.

Ответ 3

Да, все параметры, переданные функции JavaScript, могут быть доступны с помощью массива parameters внутри функции.

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

foo('bar', 'baz');