Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: function length, arguments length, function arity, JavaScript function

Как определить количество аргументов функции?

Этот вопрос проверяет знание способов определения количества аргументов, ожидаемых функцией, что важно для метапрограммирования, валидации и создания гибких API.

Короткий ответ

В JavaScript количество ожидаемых функцией аргументов (её "длину") можно получить через свойство `functionName.length`. Это свойство возвращает количество параметров, указанных в объявлении функции, до первого параметра по умолчанию или остаточного параметра (`...rest`). Для получения количества фактически переданных аргументов внутри функции используется псевдомассив `arguments.length`. Свойство `length` полезно для интроспекции и создания адаптивных утилит.

Длинный ответ

В JavaScript функция является объектом и имеет встроенное свойство length, которое указывает на количество параметров, ожидаемых при её объявлении. Это значение, известное как "арность" (arity) функции, полезно для метапрограммирования, например, при создании декораторов, каррирования или валидации вызовов.

Как работает свойство length

Свойство length возвращает количество параметров, указанных в сигнатуре функции до первого параметра со значением по умолчанию или остаточного параметра (...rest). Например:

function sum(a, b, c) {
    return a + b + c;
}
console.log(sum.length); // 3

function greet(name, greeting = 'Hello') {
    return `${greeting}, ${name}!`;
}
console.log(greet.length); // 1 (параметры после значения по умолчанию не считаются)

function logAll(...args) {
    console.log(args);
}
console.log(logAll.length); // 0 (остаточный параметр не учитывается)

Фактическое количество переданных аргументов

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

function example(x, y) {
    console.log('Ожидалось:', example.length); // 2
    console.log('Передано:', arguments.length); // Может быть 0, 1, 2 или больше
}
example(10); // Ожидалось: 2, Передано: 1

const arrow = (...params) => {
    console.log('Передано аргументов:', params.length);
};
arrow(1, 2, 3); // Передано аргументов: 3

Практическое применение

Определение длины функции используется в различных сценариях:

  • Каррирование и частичное применение: Библиотеки типа Lodash проверяют length, чтобы знать, когда функция полностью применена.
  • Валидация: Можно проверить, передано ли минимально необходимое количество аргументов.
  • Декораторы и высшие компоненты: Для адаптивной обёртки функций, которые могут принимать разное число параметров.
// Пример: декоратор для логирования арности
function logArity(fn) {
    console.log(`Функция ${fn.name} ожидает ${fn.length} аргумент(ов)`);
    return fn;
}

const add = logArity((a, b) => a + b);
// В консоли: "Функция add ожидает 2 аргумент(ов)"

Вывод: Используйте function.length, когда нужно узнать ожидаемое количество параметров функции для метапрограммирования или интроспекции, а arguments.length или ...rest — для работы с фактически переданными аргументами внутри функции. Это особенно полезно при создании библиотек, утилит или фреймворков, где требуется адаптивность к сигнатурам функций.

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#function length

#arguments length

#function arity

#JavaScript function

Подпишись на React Developer в телеграм