无法正确注入参数?
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
之后(sum
的 x
),它 returns 一个需要单个参数的函数(sum
的 y
).
用一个参数调用 that 函数后,您已经为 sum
的所有参数提供了值,因此 returns 3. (这不是一个函数,因此当您尝试调用它时会出错。)
console.log(sumMany(1)(2))
记录 3,正如预期的那样。
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
之后(sum
的 x
),它 returns 一个需要单个参数的函数(sum
的 y
).
用一个参数调用 that 函数后,您已经为 sum
的所有参数提供了值,因此 returns 3. (这不是一个函数,因此当您尝试调用它时会出错。)
console.log(sumMany(1)(2))
记录 3,正如预期的那样。