Как reduce работает в данном контексте?

я думал reduce работает как-то так .reduce((a,b)=>a(b)

А здесь он возвращает сначала функцию ,а затем работает как обычный метод reduce .reduce((a,b)=>(C)=>a(b(c))))

Объясните на пальцах как это работает ?

let b = (str) => {
  let st = str[0]
  return st.toUpperCase()
}

let a = (str) => {
  console.log("im in a")
  return str + "!"
}

const compose = (...funcs) => {
  return funcs.reduce((a, b) => (...args) => (a(b(args))))
}

const comp = compose(a, b)("hey")
console.log(comp)


Ответы (0 шт):