柯里化

27 阅读1分钟
// 设计一个sum函数,使其满足以下要求
sum(1, 2).sumOf()// 返回 3 
sum(1, 2)(3).sumOf() // 返回 6 
sum(1)(2, 3, 4).sumOf() // 返回 10 
sum(1, 2)(3, 4)(5).sumOf() // 返回 15


function sum(){
   let args= [...arguments];
   function inner(){
    args = [...args,...arguments];
    return sum(...args);
   }
   inner.sumOf = function(){
    console.log(args.reduce((acc,cur)=>acc+cur));
   }
   return inner;
}