Arguments
Массив из аргументов, передаваемых функции.
Локальная переменная из
Все объекты функции.
Свойство из
(не рекомендуется).
Реализовано в
JavaScript 1.1, NES 2.0
JavaScript 1.2: добавлено свойство .
JavaScript 1.3: не рекомендуется свойство ; удалена поддержка имён аргументов и и мён локальных переменных как свойств массива arguments.
JavaScript 1.4: не рекомендуются arguments, и как свойства Function; arguments
остался как локальная переменная функции, и и - как свойства этой переменной.
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.