Как создать функции с переменными аргументами в JavaScript? - PullRequest
18 голосов
/ 09 сентября 2011

Я хочу создать функцию в javascript с переменным количеством аргументов.Следующий пример, как я хочу вызвать эту функцию:

myFunction(1,2);
myFunction(1,2,3);
myFunction(1,2,3,4);
myFunction(1,2,3,4,5);
myFunction(1,2,3,4,5,6);

Кто-нибудь знает, как определить эту функцию?

Ответы [ 6 ]

28 голосов
/ 09 сентября 2011

Вы можете получить доступ к аргументам по их порядковому положению без необходимости указывать их в прототипе следующим образом:

function myFunction() {
  for (var i = 0; i < arguments.length; i++)
    alert(arguments[i]);
}

myFunction(1, 2, "three");

>>1
>>2
>>three

Или, если вы действительно передаете набор семантически связанных чисел, вы можете использовать массив;

function myFunction(arr) { ... }
result = myFunction([1,2,3]);
9 голосов
/ 26 апреля 2017

Последнее обновление

Параметры отдыха поддерживаются во всех новых браузерах. Подробности смотрите здесь

Синтаксис параметра rest позволяет нам представлять неопределенное количество аргументов в виде массива, который вы также можете передавать его другим функциям.

function myFunction(...data){
  console.log(...data);
  myOtherFunction(...data);
}

myFunction(1,2,3);     //logs 1,2,3

myFunction([1,2,3]);   //logs [1,2,3]
3 голосов
/ 09 сентября 2011

Используйте переменную 'arguments' следующим образом:

function myFunction() {
    alert(arguments.length + ' arguments');
    for( var i = 0; i < arguments.length; i++ ) {
        alert(arguments[i]);
    }
 }

Вызовите методы, как вы делали раньше

myFunction(1,2);
myFunction(1,2,3,4,5,6);
2 голосов
/ 09 сентября 2011

Если аргумент отсутствует, используйте значение по умолчанию.Вот так ...

function accident() {
    //Mandatory Arguments
    var driver = arguments[0];
    var condition = arguments[1]

    //Optional Arguments
    var blame_on = (arguments[2]) ? arguments[2] : "Irresponsible tree" ;
}

accident("Me","Drunk");
2 голосов
/ 09 сентября 2011

Просто обратитесь к массиву аргументов.

https://developer.mozilla.org/en/JavaScript/Reference/functions_and_function_scope/arguments

1 голос
/ 31 июля 2015

В качестве дополнения: Вы можете присваивать значения безымянным параметрам функции, как в (немецкий вики)

arguments[0] = 5;
...