柯里化會(huì)讓一個(gè)多參數(shù)的函數(shù)轉(zhuǎn)換成單參數(shù)的函數(shù):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)
// 假設(shè)有一個(gè)函數(shù)curry可以做到柯里化
var aaa = curry(sum)(1,2)(3,4)(5,6);
console.log(aaa);
//curry函數(shù)的實(shí)現(xiàn)
function curry(fn,arr=[]){
let len = fn.length; //函數(shù)的長(zhǎng)度是函數(shù)形參的個(gè)數(shù)
return function (...args){
let arrs = [...arr,...args];
if(arrs.length < len){
return curry.call(this,fn,arrs);
}else{
return fn(...arrs);
}
}
}