Ответ 1
JavaScript позволяет это, вы можете передать произвольное количество аргументов функции.
Они доступны в объекте arguments
, который является объектом типа массива, который имеет числовые свойства, содержащие значения аргументов, которые были используемый при вызове функции, свойство length
, которое сообщает вам, сколько аргументов было использовано и при вызове, и свойство callee
, которое является ссылкой на саму функцию, например, вы могли бы написать:
function sum(/*arg1, arg2, ... , argN */) { // no arguments defined
var i, result = 0;
for (i = 0; i < arguments.length; i++) {
result += arguments[i];
}
return result;
}
sum(1, 2, 3, 4); // 10
Объект arguments
может выглядеть как массив, но это простой объект, который наследуется от Object.prototype
, но если вы хотите использовать методы Array на нем, вы можете вызывать их непосредственно из Array.prototype
, например, общий шаблон для получения реального массива заключается в использовании метода Array slice
:
function test () {
var args = Array.prototype.slice.call(arguments);
return args.join(" ");
}
test("hello", "world"); // "hello world"
Кроме того, вы можете узнать, сколько аргументов ожидает функция, используя свойство length
объекта функции:
function test (one, two, three) {
// ...
}
test.length; // 3