– Количество аргументов, переданных функции, и количество элементов массива в объекте 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
Array
Array
встроенная поддержка массивов (Object->Array)
Конструктор
new Array
new Array(размер)
new Array(элементе, элемент1..... элемент)
Аргументы
размер– Желаемое количество элементов в массиве. Длина возвращаемого массива (
length
) равна аргументу размер.
элемент0, ... элементN– Список аргументов из двух и более произвольных значений. Когда конструктор А г ray вызывается с этими аргументами, элементы только что созданного массива инициализируются указанными значениями, а свойство length становится равным количеству аргументов.
Возвращаемое значение
Вновь созданный и инициализированный массив. Когда конструктор
Array
вызывается без аргументов, он возвращает пустой массив, свойство
length
которого равно 0.
При вызове с одним числовым аргументом конструктор возвращает массив с указанным количеством неопределенных элементов. При вызове с любыми другими аргументами конструктор инициализирует массив значениями аргументов. Когда конструктор
Аrray
вызывается как функция (без оператора
new
), он ведет себя точно так-же, как при вызове с оператором
new
.
Исключения
RangeErгог
Когда конструктору
Аггау
передается один целый аргумент размер, генерируется исключение
RangeErгог
, если размер отрицателен или превышает 232– 1.
Синтаксис литерала
ECMAScript v3 определяет синтаксис литералов для массивов. Программист может создавать и инициализировать массив, заключая список выражений, перечисленных через запятые, в квадратные скобки. Значения этих выражений становятся элементами массива. Например: