函数柯里化的简单实现

函数柯里化指:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。

例如:

const sum = (a, b, c) => a + b + c

const curried = curry(sum)
console.log(curried(1)(2)(3)) // 6
console.log(curried(1, 3)(5)) // 9
console.log(curried(2)(4)(6)) // 12
复制代码

实现流程图:

流程图.png

实现代码:

function curry(fn, ...args) {
  const argNum = fn.length // 函数参数的个数
  return fillArgs(fn, argNum, args || [])
}

// 获取参数
function fillArgs(fn, argNum, currArgs) {
  if(argNum === currArgs.length) {
    return fn(...currArgs)
  }
  return (...args) => {
    return fillArgs(fn, argNum, [...currArgs, ...args])
  }
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享