Hack Frontend Community

Что такое псевдомассив arguments в JavaScript

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

Он существует только в обычных (не стрелочных) функциях и позволяет работать с переменным числом аргументов.


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

function sum() {
  console.log(arguments); // Псевдомассив
  let total = 0;

  for (let i = 0; i < arguments.length; i++) {
    total += arguments[i];
  }

  return total;
}

console.log(sum(1, 2, 3)); // 6

Особенности объекта arguments

ХарактеристикаЗначение
Типobject
Имеет lengthда
Индексациякак у массива ([0], [1])
Методы массиванет (нужно преобразовать)
Только для functionстрелочные функции не имеют arguments

Почему это псевдомассив?

Он похож на массив, потому что:

  • имеет индексы
  • имеет length

Но:

  • это не настоящий Array
  • не имеет методов map, forEach, filter и т.д.

Преобразование в массив

const args = Array.from(arguments);
// или
const args2 = [...arguments]; // сработает только в обычной функции

В стрелочных функциях

const foo = () => {
  console.log(arguments); // ❌ ReferenceError
};

foo(1, 2, 3);

arguments в стрелочной функции не существует, потому что стрелочные функции не создают собственный контекст.

Современная альтернатива — Rest параметры

function sum(...args) {
  return args.reduce((acc, curr) => acc + curr, 0);
}

Важно:

Объект arguments — устаревшая практика. В современных проектах используйте rest-параметры (...args).