compose применяет функции справа налево. Для унарных синхронных функций это удобно выразить через reduceRight; пустая композиция возвращает аргумент.
Реализуйте функцию compose, которая последовательно применяет переданные функции справа налево: результат каждой функции передаётся в следующую.
compose применяет функции справа налево. Для унарных синхронных функций это удобно выразить через reduceRight; пустая композиция возвращает аргумент.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
compose применяет функции справа налево. Для унарных синхронных функций это удобно выразить через reduceRight; пустая композиция возвращает аргумент.
function compose(...functions) {
return value => functions.reduceRight((result, fn) => fn(result), value);
}
const calculate = compose(x => x * 2, x => x + 3);
console.log(calculate(4)); // 14
Контракт здесь — один входной аргумент, без специальной привязки this и автоматического ожидания Promise. Если функции асинхронные, нужна цепочка then или await; обычный reduceRight передаст Promise следующей функции как значение.