При входе в тело функции создается локальный объект 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("Михаил", "Максим", "Сергей", "Леонид");