美文网首页
基于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