美文网首页
高阶函数实现(柯里化)

高阶函数实现(柯里化)

作者: GGatsby | 来源:发表于2019-08-05 15:39 被阅读0次

    请实现一个 add 函数,满足以下功能。

    add(1);     // 1
    add(1)(2);      // 3
    add(1)(2)(3);  // 6
    add(1)(2, 3);   // 6
    add(1, 2)(3);   // 6
    add(1, 2, 3);   // 6
    

    思路:
    1.函数内部返回新的函数
    2.函数内部记录每次传入的参数
    3.函数结果通过调用默认toString方法输出

    代码如下:

    function add() {
      let args = [].slice.call(arguments);
      let fn = function(){
       let fn_args = [].slice.call(arguments)
       return add.apply(null,args.concat(fn_args))
     }
     fn.toString = function(){
       return args.reduce((a,b)=>a+b)
     }
     return fn
    }
    

    https://www.jianshu.com/p/2975c25e4d71

    相关文章

      网友评论

          本文标题:高阶函数实现(柯里化)

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