Книга: JavaScript. Подробное руководство, 6-е издание
Arguments
Разделы на этой странице:
Arguments
arguments[]
массив аргументов функции
Синтаксис
arguments
Описание
Массив arguments[]
определен только внутри тела функции, где он ссылается на объект Arguments
этой функции. Данный объект имеет нумерованные свойства и представляет собой массив, содержащий все переданные функции аргументы. Идентификатор arguments
- это, по существу, локальная переменная, автоматически объявляемая и инициализируемая внутри каждой функции. Она ссылается на объект Arguments
только внутри тела функции и не определена в глобальном программном коде.
См. также
Arguments; глава 8
Arguments
аргументы и другие свойства функции (Object->Arguments)
Синтаксис
arguments
arguments[n]
Элементы
Объект Arguments
определен только внутри тела функции. Хотя формально он не является массивом, у него есть нумерованные свойства, действующие как элементы массива, и свойство length
, значение которого равно количеству элементов массива. Его элементами являются значения, переданные функции в качестве аргументов. Элемент 0 - это первый аргумент, элемент 1 - второй аргумент и т. д. Все значения, переданные в качестве аргументов, становятся элементами массива в объекте Arguments
независимо от того, присвоены ли этим аргументам имена в объявлении функции.
Свойства
callee
- Ссылка на выполняемую в данный момент функцию.
length
- Количество аргументов, переданных функции, и количество элементов массива в объекте Arguments.
Описание
Когда вызывается функция, для нее создается объект Arguments
, и локальная переменная arguments
автоматически инициализируется ссылкой на объект Arguments
. Основное назначение объекта Arguments
- предоставить возможность определить, сколькo аргументов передано функции, и обратиться к неименованным аргументам. В дополнение к элементам массива и свойству length
, у объекта Arguments
имеется свойство callee
, которое позволяет неименованной функции ссылаться на саму себя.
Для большинства задач объект Arguments
можно рассматривать как массив с дополнительным свойством callee
. Однако он не является экземпляром объекта Array
, а свойство Arguments.length
не обладает особым поведением, как свойство Array.length
, и не может использоваться для изменения размера массива.
При выполнении сценария в нестрогом режиме объект Arguments
имеет одну очень необычную особенность. Когда у функции есть именованные аргументы, элементы массива в объекте Arguments
являются синонимами локальных переменных, содержащих аргументы функции. Объект Arguments
и имена аргументов предоставляют два различных способа обращения к одной и той же переменной. Изменение значения аргумента с помощью имени аргумента изменяет значение, извлекаемое через объект Arguments
, а изменение значения аргумента через объект Arguments изменяет значение, извлекаемое по имени аргумента.
См. также
Function; глава 8
Arguments.callee
(не доступно в строгом режиме)
функция, выполняемая в данный момент
Синтаксис
arguments.callee
Описание
arguments.callee
ссылается на функцию, выполняющуюся в данный момент. Данный синтаксис предоставляет неименованной функции возможность сослаться на себя. Это свойство определено только внутри тела функции.
Пример
// Неименованный литерал функции использует свойство callee
// для ссылки на себя, чтобы произвести рекурсивный вызов
var factorial = function(x) {
if (x < 2) return 1; else return x * arguments.callee(x1);
}
var у = factorial(5); // Вернет 120
Arguments.length
число аргументов, переданных функции
Синтаксис
arguments.length
Описание
Свойство length
объекта Arguments
возвращает количество аргументов, переданных текущей функции. Это свойство определено только внутри тела функции.
Обратите внимание: это свойство возвращает фактическое количество переданных аргументов, а не ожидаемое. О количестве аргументов в объявлении функции говорится в справочной статье Function.length
. Кроме того, следует отметить, что это свойство не обладает особым поведением, как свойство Array.length
.
Пример
// Использовать объект Arguments, чтобы проверить, верное ли количество
// аргументов было передано
function check(args) {
var actual = args.length; // Фактическое количество аргументов
var expected = args.callee.length; // Ожидаемое количество аргументов
if (actual != expected) { // Если не совпадают, сгенерировать исключение
throw new Error("Неверное число аргументов: ожидается: " +
expected + ”; фактически передано " + actual);
}
}
// Функция, демонстрирующая использование функции, приведенной выше
function f(x, у, z) {
check(arguments); // Проверить правильность количества аргументов
return х + у + z; // Выполнить оставшуюся часть функции обычным образом
См. также
Array.length, Function.length
- 4.1.4 Variable Number of Arguments
- Summary of ipfwadm Arguments
- Optional arguments
- Passing Arguments to Main()
- Объект WshArguments
- Свойство Arguments
- 8.3.2. Списки аргументов переменной длины: объект Arguments
- Объект arguments
- Аргументы функции в Python
- Свойство WindowsState
- Choosing, Configuring, and Installing the Boot Loader
- User Management Tools