Что такое псевдомассив 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
).