美文网首页
基于JavaScript函数闭包实现偏函数以及柯里化

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

作者: Bury丶冬天 | 来源:发表于2019-08-05 12:25 被阅读0次
  • 1.偏函数
    对函数进行偏函数操作的函数
// 偏函数
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
  • 2.柯里化
    演示对含有三个参数的函数进行柯里化
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

相关文章

网友评论

      本文标题:基于JavaScript函数闭包实现偏函数以及柯里化

      本文链接:https://www.haomeiwen.com/subject/jxapdctx.html