Ядро JavaScript 1.5. Справочник

       

Arguments


Массив из аргументов, передаваемых функции.

Локальная переменная из

Все объекты функции.

Свойство из

(не рекомендуется).

Реализовано в

JavaScript 1.1, NES 2.0

JavaScript 1.2: добавлено свойство .

JavaScript 1.3: не рекомендуется свойство ; удалена поддержка имён аргументов и и мён локальных переменных как свойств массива arguments.

JavaScript 1.4: не рекомендуются arguments, и как свойства Function; arguments

остался как локальная переменная функции, и и - как свойства этой переменной.

Версия ECMA

ECMA-262

Описание

Массив arguments это локальная переменная, доступная внутри всех объектов функции; arguments

больше не используется в качестве свойства Function.

Вы можете обращаться к аргументам функции внутри функции через использование массива arguments. Этот массив содержит вход для каждого аргумента, передаваемого функции. Например, если функции передаются три аргумента, Вы можете обращаться к этим аргументам так:



arguments[0]

arguments[1]

arguments[2]

Массив arguments доступен только внутри тела функции. Попытка получить доступ к массиву arguments

за пределами объявления функции приводит к ошибке.

Вы можете использовать массив arguments

при вызове функции с большим количеством аргументов, чем формально объявлено. Эта техника используется в функциях, которым может передаваться непостоянное количество аргументов. Можно использовать arguments.length для определения количества аргументов, переданных функции, а затем обработать каждый аргумент с помощью массива arguments. (Чтобы определить количество аргументов, объявленных при определении функции, используйте свойство .)

 

Массив arguments имеет следующие свойства:

 

Свойство

Описание

Специфицирует тело выполняемой в данный момент функции.

Специфицирует имя функции, которая вызвала выполняемую в данный момент функцию. (Не рекомендуется использовать).

Специфицирует количество аргументов, передаваемых функции.


Обратная Совместимость

JavaScript 1.3 и более ранние версии.

Помимо использования в качестве локальной переменной, массив arguments

является также свойством объекта Function и может иметь перед собой имя функции. Например, если функции myFunc

передаются три аргумента с именами arg1, arg2 и arg3, Вы можете обращаться к этим аргументам так:

myFunc.arguments[0]

myFunc.arguments[1]

myFunc.arguments[2]

 

JavaScript 1.1 и 1.2.

Следующие возможности из JavaScript 1.1 и JavaScript 1.2 были удалены:

Каждая локальная переменная функции является свойством массива arguments. Например, если функция myFunc

имеет локальную переменную с именем myLocalVar, Вы можете обратиться к этой переменной: arguments.myLocalVar.

Каждый формальный аргумент функции является свойством массива arguments. Например, если функция myFunc имеет два аргумента с именами arg1 и arg2, Вы можете обратиться к этим аргументам: arguments.arg1 и arguments.arg2. (Вы можете также обратиться к ним arguments[0] и arguments[1].)


Примеры

Пример 1.

Здесь определена функция, соединяющая несколько строк. Единственным формальным аргументом этой функции является строка, специфицирующая символы, разделяющие объединяемые элементы. Функция определяется так:

Function myConcat(separator) {

   result="" // инициализация списка

   // iterate through arguments

   for (var i=1; i<arguments.length; i++) {

      result += arguments[i] + separator

   }

   return result

}

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

// возвращает "red, orange, blue, "

myConcat(", ","red","orange","blue")

// возвращает "elephant; giraffe; lion; cheetah;"

myConcat("; ","elephant","giraffe","lion", "cheetah")

//

возвращает "sage. basil. oregano. pepper. parsley. "

myConcat(". ","sage","basil","oregano", "pepper", "parsley")

 

Пример 2.

Здесь определена функция, создающая HTML-списки. Единственным формальным аргументом этой функции является строка, которая будет "U", если список неупорядоченный (bulleted), или "O", если это упорядоченный/нумерованный список. Функция определяется так:

Function list(type) {

   document.write("<" + type + "L>") // начало списка

   // итерация по аргументам

   for (var i=1; i<arguments.length; i++) {

      document.write("<LI>" + arguments[i])

   }

   document.write("</" + type + "L>") // конец списка

}

Вы можете передать этой функции любое количество аргументов, и она отобразит каждый аргумент как элемент списка указанного типа. Например, этот вызов функции:

list("U", "One", "Two", "Three")

даст на выходе:

<UL>

<LI>One

<LI>Two

<LI>Three

</UL>

В серверном JavaScript Вы можете отобразить тот же вывод путём вызова функции вместо document.write.



Содержание раздела