function foo(x,y,z){
console.log(x+y+z)
}
function webKingCurrying(fn){
function curryFn(...args){ //--->这里的...args是剩余参数
//两类操作:
//1.第一类操作:继续返回一个新的函数,继续接受参数
//2.第二类操作:直接返回fn的函数
if (args.length>= fn.length){
//执行第二类操作
//fn(...args) //这里的...args是展开运算符--->相当于把数组中所有的数都展示出来
return fn(...args)
}else {
return function (...newArgs){
return curryFn(...args.concat((newArgs)))
}
}
}
return curryFn
}
//对其他的函数进行柯里化
var fooCurry = webKingCurrying(foo)
fooCurry(10)(20)(30)
fooCurry(55)(12)(16)
//sum函数
function sum(num1,num2){
return num1+num2
}
//sum函数柯里化
var sumCurry = webKingCurrying(sum)
console.log(sumCurry(10)(20))
标签:function,...,return,函数,args,自动,柯里化,fn
From: https://www.cnblogs.com/hdc-web/p/18490373