Книга: JavaScript. Подробное руководство, 6-е издание
8.7.1. Свойство length
8.7.1. Свойство length
В теле функции свойство arguments.length
определяет количество аргументов, переданных функции. Однако свойство length
самой функции имеет иной смысл. Это свойство, доступное только для чтения, возвращает количество аргументов, которое функция ожидает получить, - число объявленных параметров.
В следующем фрагменте определяется функция с именем check(),
получающая массив аргументов arguments
от другой функции. Она сравнивает свойство arguments.length
(число фактически переданных аргументов) со свойством arguments. callee.length
(число ожидаемых аргументов), чтобы определить, передано ли функции столько аргументов, сколько она ожидает. Если значения не совпадают, генерируется исключение. За функцией check()
следует тестовая функция f()
, демонстрирующая порядок использования функции check():
// Эта функция использует arguments.callee, поэтому она
// не будет работать в строгом режиме,
function check(args) {
var actual = args.length; // Фактическое число аргументов
var expected = args.callee.length; // Ожидаемое число аргументов
if (actual !== expected) // Если не совпадают, генерируется исключение
throw new Еrror("ожидается: " + expected + получено " + actual);
}
function f(x, у, z) {
// Проверить число ожидаемых и фактически переданных аргументов.
check(arguments);
// Теперь выполнить оставшуюся часть функции как обычно
return х + у + z;
}