欢迎光临
我们一直在努力

【前端手撕】函数柯里化curry

柯里化是把一个接受多个参数的函数,转换成接受单一参数(或部分参数)并返回一个新函数,直到收到全部所需参数后才执行原函数的过程。

例如:

function add(a, b, c) { return a + b + c }
const curriedAdd = curry(add);
curriedAdd(1)(2)(3) // 6
curriedAdd(1, 2)(3) // 6
curriedAdd(1)(2, 3) // 6

本质是参数收集,当收集到的参数个数达到原函数定义的形参个数(fn.length)时,就调用原函数。

代码

const curry = (fn, …args) => {
if (args.length >= fn.length) {
return fn(…args)
} else {
return (…rest) => {
return curry(fn, …args, …rest)
}
}
}

注意:这里的fn.length是函数定义时声明的形参个数(不包括剩余参数)。一般这个实现是针对常规固定参数函数的。

赞(0)
未经允许不得转载:171主机测评 » 【前端手撕】函数柯里化curry
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址