Выбор ответа Middle Функции высшего порядка обновлено

Порядок применения в compose

Вопрос

Что выведет код?

const compose = (...fns) => (x) => fns.reduceRight((v, f) => f(v), x);
const inc = (x) => x + 1;
const double = (x) => x * 2;
console.log(compose(inc, double)(5));

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: 11. reduceRight проходит функции справа налево, поэтому compose(inc, double)(5) это inc(double(5)) = inc(10) = 11.

Варианты ответа

  1. 12
  2. 10
  3. 7
  4. 11правильный ответ

Разбор

reduceRight проходит функции справа налево, поэтому compose(inc, double)(5) это inc(double(5)) = inc(10) = 11. 12 получилось бы при порядке слева направо, double(inc(5)): так работает pipe. 10 это результат только double, 7 это 5 + 2, такой комбинации в коде нет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.