При входе в тело функции создается локальный объект
arguments, который имеет следующие свойства:
- Свойство callee с атрибутами { DontEnum }. Начальным значением этого свойства является исполняемый в данный момент объект Function. Это свойство обеспечивает возможность рекурсивного вызова безымянных функций.
- Свойство length с атрибутами { DontEnum }. Начальным значением этого свойства является количество фактических аргументов, переданных функции при ее вызове.
- Массив значений фактических аргументов функции. Для доступа к значениям массива используется синтаксис:
функция.arguments[i]
где функция — идентификатор, задающий имя текущей функции, а i — номер аргумента, начиная с нуля.
Этот объект полезен в тех случаях, когда мы заранее не знаем количества аргументов, которые будут переданы данной функции. В следующем примере функция
initArray создает новый массив и копирует в него список своих фактических аргументов.
function initArray() {
this.length = initArray.arguments.length;
for (var i = 0; i < this.length; i++)
this[i] = initArray.arguments[i];
}
var myFriends = new initArray("Михаил", "Максим", "Сергей", "Леонид");