Если вызов должен выглядеть как get3(1, 2, 3), функция должна собирать rest-аргументы в массив. Оператор spread при вызове делает обратное и не исправляет исходную сигнатуру сам по себе.
Вызов функции с аргументами, перечисленными через запятую
Если вызов должен выглядеть как get3(1, 2, 3), функция должна собирать rest-аргументы в массив. Оператор spread при вызове делает обратное и не исправляет исходную сигнатуру сам по себе.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Функция get3(data) принимает массив в качестве входного параметра. Требуется реализовать способ вызова этой функции, передавая отдельные элементы массива через запятую.
function get3(data) {
return data.reduce((acc, item) => {
console.log(1);
});
}
console.log(get3(arr));
Ответ
Если вызов должен выглядеть как get3(1, 2, 3), функция должна собирать rest-аргументы в массив. Оператор spread при вызове делает обратное и не исправляет исходную сигнатуру сам по себе.
function get3(...data) {
return data.reduce((sum, item) => sum + item, 0);
}
console.log(get3(1, 2, 3)); // 6
Суммирование выбрано лишь как пример полезного reducer: в исходном callback нет return, он только печатает 1. Если менять оригинальную функцию нельзя, сделайте обёртку (...items) => get3(items). Исходный reducer без начального значения не вызывается для первого элемента; на пустом массиве будет TypeError, а при двух и более элементах итог станет undefined.