Вызов функции с аргументами, перечисленными через запятую

Если вызов должен выглядеть как 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее