美文网首页
柯里化 add(1)(2)(3)

柯里化 add(1)(2)(3)

作者: McDu | 来源:发表于2021-03-16 14:58 被阅读0次
function add() {
    const args = [...arguments];
    
    const fn = function() {
         const args2 = args.concat(...arguments);
         return add.apply(null, args2);
    }

    fn.valueOf = function() {
        return args.reduce((a, b) => a + b);
    }

    return fn;
}
const currying = (fn, ...args) => {
     if(args.length >= fn.length) {
          return fn(...args);
      } else {
          return (...args2) => {
              return currying(fn, ...args, ...args2);
          }
      }
}
const adding = (...args) => args.reduce((pre, cur) => pre + cur, 0);

//参数不确定
const currying = (fn) => {
  let args = [];

  return function temp(...newArgs) {
    if (newArgs.length) {
      args.push(...newArgs);
      return temp;
    } else {
      const val = fn.apply(this, args);
      args = [];
      return val;
    }
  };
};

var myAdd = currying(adding)
myAdd(1)(2)() // 3

相关文章

网友评论

      本文标题:柯里化 add(1)(2)(3)

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