const square = (x) => x x; const times2 = (x) => x 2; const sum = (a, b) => a + b;
Реализовать функцию compose, которая принимает переменное количество функций и возвращает новую функцию.
const square = (x) => x x; const times2 = (x) => x 2; const sum = (a, b) => a + b;
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализовать функцию compose, которая принимает переменное количество функций и возвращает новую функцию.
Результат работы каждой функции передается в следующую.
Ответ
javascript function compose(...funcs) { return function(...args) { // Начинаем с вызова последней функции с исходными аргументами let result = funcsfuncs.length - 1; // Затем последовательно вызываем остальные функции справа налево for (let i = funcs.length - 2; i >= 0; i--) { result = funcsi; } return result; }; }
const square = (x) => x * x; const times2 = (x) => x * 2; const sum = (a, b) => a + b;
console.clear(); console.log(compose(square, times2)(2) === square(times2(2))); // true console.log(compose(square, times2, sum)(3, 4) === square(times2(sum(3, 4)))); // true
Функция `compose` принимает произвольное количество функций и возвращает новую функцию, которая при вызове передаёт аргументы в последнюю функцию, а затем результат каждой функции передаёт в предыдущую, реализуя композицию функций справа налево.