函数柯里话实现累加

// 方法一
function
Sum () {
  // 用一个数组来存储所有的参数 let args
= [].slice.call(arguments); // 定义一个函数 利用闭包的特性来收集所有的参数值 let fn = function() { let fn_args = [].slice.call(arguments); return Sum.apply(null,args.concat(fn_args)); } // 利用函数的隐式转换 重新定义toString 方法 内部使用reduce 累加后返回最终数据 fn.toString = function() { return args.reduce((acc,next)=>{ return acc + next; }) } return fn }

// test
Sum(1)(2,3) // 6
Sum(1,2,3) // 6
// 函数柯里化

function currying(fn){
  let slice = Array.prototype.slice;
let _args = slice.call(arguments,1)
  return function() {
     let _inargs = slice.call(arguments);
      return fn.apply(null,_args.concat(_inargs));
}
}
原文地址:https://www.cnblogs.com/wtfu/p/13794456.html