基于JavaScript函数闭包实现偏函数以及柯里化

2019-08-05  本文已影响0人  Bury丶冬天
// 偏函数
const partialApply = (fn, ...partArgs) => {
  return function (...remainingArgs) {
    return fn.apply(this, partArgs.concat(remainingArgs))
  }
}

测试代码

const add = (a, b, c) => a + b + c
// 首先传第一个参数,然后返回一个函数
const add2 = partialApply(add, 10)
// 基于返回的函数,传第二个参数,返回一个函数
const add3 = partialApply(add2, 5)
// 使用最终返回的函数调用,并传递第三个参数,得到函数最终调用结果
console.log('偏函数', add3(5))

运行结果

偏函数 20
function curry(func) {
  return function (a) {
    return function (b) {
      return function (c) {
        return func(a, b, c)
      }
    }
  }
}

测试代码

// 柯里化后连续调用函数
console.log('柯里化', curry(add)(10)(5)(5))

运行结果

柯里化 20
上一篇下一篇

猜你喜欢

热点阅读