无法正确注入参数?

Unable to inject parameters properly?

const curryByBind = (fn) => fn.length === 0 ? fn() : (arg) => fn.bind(null, arg);
const sum = (x,y) => x+y;
const sumMany = curryByBind(sum);

console.log(sumMany(1)(2)())

我正在尝试学习 curry 并尝试通过 bind 将参数注入函数,我在想 sumMany(1) 应该 return 一个可以接受 (2) 最终执行 fn(),但我无法弄清楚哪一部分出错了,它说 sumMany(...)(...) is not a function?

您的 curryByBind 工作正常:唯一的问题是您 运行 没有参数。

sum(x, y) 有两个参数。在使用一个参数调用 sumMany 之后(sumx),它 returns 一个需要单个参数的函数(sumy ).

用一个参数调用 that 函数后,您已经为 sum 的所有参数提供了值,因此 returns 3. (这不是一个函数,因此当您尝试调用它时会出错。)

console.log(sumMany(1)(2)) 记录 3,正如预期的那样。