> Как использовать arguments в JavaScript? (JavaScript, TypeScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Газпромбанк, IT-One, Яндекс

Стек: JavaScript, TypeScript

> Пример ответа

arguments - это встроенный объект, доступный внутри обычных (не стрелочных) функций. Он представляет собой массивоподобный объект, содержащий все переданные функции аргументы, независимо от того, объявлены ли они в параметрах.

Ключевые особенности:

  • Является массивоподобным (имеет свойство length и индексы), но не массивом - у него нет методов forEach, map, filter.

  • Доступен только в обычных функциях (function), в стрелочных функциях (=>) он не определён.

  • В строгом режиме ('use strict') arguments не синхронизируется с именованными параметрами.

Пример использования:

JAVASCRIPT
function sum() {
let total = 0;
for (let i = 0; i < arguments.length; i++) {
total += arguments[i];
}
return total;
}
console.log(sum(1, 2, 3)); // 6
console.log(sum(10, 20)); // 30

Преобразование в настоящий массив:

JAVASCRIPT
function logArgs() {
const args = Array.from(arguments); // или [...arguments]
args.forEach(arg => console.log(arg));
}

Современная альтернатива: В современном JavaScript (ES6+) рекомендуется использовать rest-параметры (...args), которые дают настоящий массив и работают в стрелочных функциях:

JAVASCRIPT
const sum = (...args) => args.reduce((acc, val) => acc + val, 0);

Когда может пригодиться arguments:

  • В коде, где нужно поддерживать старые браузеры (без транспиляции).

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

Важно: В TypeScript arguments имеет тип IArguments, но предпочтительнее использовать rest-параметры с явной типизацией:

TYPESCRIPT
function sum(...args: number[]): number {
return args.reduce((a, b) => a + b, 0);
}

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью