柯里化会让一个多参数的函数转换成单参数的函数:fn(a,b,c) ——> fn(a)(b)(c )
function sum(a,b,c,d,e,f){
return a+b+c+d+e+f;
}
sum(1,2,3,4,5,6)
// 假设有一个函数curry可以做到柯里化
var aaa = curry(sum)(1,2)(3,4)(5,6);
console.log(aaa);
//curry函数的实现
function curry(fn,arr=[]){
let len = fn.length; //函数的长度是函数形参的个数
return function (...args){
let arrs = [...arr,...args];
if(arrs.length < len){
return curry.call(this,fn,arrs);
}else{
return fn(...arrs);
}
}
}
网友评论