让所有函数只接受一个参数
把add(1,2,3)转化成curriedAdd(1)(2)(3)的形式
const curriedAdd = a=>b=>c=>add(a,b,c)
function currify(fn,params=[]){
return function(...args){
if(params.length+args.length===fn.length){
return fn(...params,...args)
}else{
return currify(fn,[...args,...params])
}
}
}
把函数作为参数或者返回值的函数
function compose() {
var fns = [].slice.call(arguments)
return function (initialArg) {
var res = initialArg
for (var i = fns.length - 1; i > -1; i--) {
res = fns[i](res)
}
return res
}
}