> Как использовать arguments в JavaScript? (JavaScript, TypeScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Газпромбанк, IT-One, Яндекс
Стек: JavaScript, TypeScript
> Пример ответа
arguments - это встроенный объект, доступный внутри обычных (не стрелочных) функций. Он представляет собой массивоподобный объект, содержащий все переданные функции аргументы, независимо от того, объявлены ли они в параметрах.
Ключевые особенности:
-
Является массивоподобным (имеет свойство
lengthи индексы), но не массивом - у него нет методовforEach,map,filter. -
Доступен только в обычных функциях (
function), в стрелочных функциях (=>) он не определён. -
В строгом режиме (
'use strict')argumentsне синхронизируется с именованными параметрами.
Пример использования:
JAVASCRIPTfunction sum() {let total = 0;for (let i = 0; i < arguments.length; i++) {total += arguments[i];}return total;}console.log(sum(1, 2, 3)); // 6console.log(sum(10, 20)); // 30
Преобразование в настоящий массив:
JAVASCRIPTfunction logArgs() {const args = Array.from(arguments); // или [...arguments]args.forEach(arg => console.log(arg));}
Современная альтернатива: В современном JavaScript (ES6+) рекомендуется использовать rest-параметры (...args), которые дают настоящий массив и работают в стрелочных функциях:
JAVASCRIPTconst sum = (...args) => args.reduce((acc, val) => acc + val, 0);
Когда может пригодиться arguments:
-
В коде, где нужно поддерживать старые браузеры (без транспиляции).
-
В функциях с неизвестным количеством аргументов, где rest-параметры неудобны (например, при работе с
arguments.callee, хотя он устарел).
Важно: В TypeScript arguments имеет тип IArguments, но предпочтительнее использовать rest-параметры с явной типизацией:
TYPESCRIPTfunction sum(...args: number[]): number {return args.reduce((a, b) => a + b, 0);}
> Похожие задачи по frontend
Почему у объекта arguments в JavaScript нет метода shift
Как решать проблему потери контекста методов в классах JavaScript/TypeScript
Как отлаживать ошибки в коде
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью