Проверяет понимание псевдомассива arguments в функциях JavaScript и его роли при работе с переменным числом аргументов.
Объект arguments доступен внутри любой обычной функции (не стрелочной) и содержит все аргументы, переданные при вызове, независимо от того, сколько параметров объявлено в сигнатуре. Это позволяет писать функции с переменным числом аргументов, когда заранее неизвестно их количество.
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, 40)); // 100
У arguments есть свойство length и доступ по индексу, но нет методов массива. Чтобы использовать map или reduce, его нужно преобразовать:
function logAll() {
const args = Array.from(arguments);
args.forEach(a => console.log(a));
}
logAll('a', 'b', 'c');
В ES6 появились rest-параметры, которые дают настоящий массив и работают в стрелочных функциях. Для нового кода предпочтительнее именно они:
const sum = (...nums) => nums.reduce((a, b) => a + b, 0);
console.log(sum(1, 2, 3)); // 6
Итог: arguments стоит применять в устаревшем коде или когда нужно получить все аргументы без явного объявления rest-параметров, но в современном JavaScript почти всегда лучше использовать ...rest.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию