Передайте неизвестное количество параметров функции 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');