2020-01-23
描述
将一个函数实现柯里化传参。
提示
- 使用递归
- 如果提供的参数(
args
)个数充足,则调用传递的函数fn
- 否则的话,返回一个包含剩余参数的柯里化函数
fn
- 如果你想要柯里化一个可以接受任意参数的函数(一个可变参函数,如
Math.min()
),你可以将参数的数量传递给第二个可选参数arity
代码
const curry = (fn, arity = fn.length, ...args) =>
arity <= args.length ? fn(...args) : curry.bind(null, fn, arity, ...args);
示例
对传入的参数进行计算:
curry(Math.pow)(2)(10); // 1024
curry(Math.min, 3)(10)(50)(2); // 2