函数柯里化实现

202 阅读1分钟

实现原理

主要使用闭包实现,其实我们无时无刻不在使用柯里化函数,只是没有将它总结出来而已。它的本质就是将一个参数很多的函数分解成单一参数的多个函数。 实际应用中:

  • • 延迟计算 (用闭包把传入参数保存起来,当传入参数的数量足够执行函数时,开始执行函数)
  • • 动态创建函数 (参数不够时会返回接受剩下参数的函数)
  • • 参数复用(每个参数可以多次复用)

实现

onst curry = fn =>
  (judge = (...args) =>
    args.length >= fn.length
      ? fn(...args)
      : (...arg) => judge(...args, ...arg));