什么是柯里化
- 函数柯里化(curry)是函数式编程里面的概念:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
- 每次调用函数时,只接受一部分参数,并返回一个函数,直到传递所有参数为止。
- 柯里化,不可变数据类型,纯函数等都是函数式编程中的概念。
- 工具函数生成柯里化函数思路:判断当前传入函数的参数个数是否大于等于原函数所需参数个数,如果是,则执行当前函数;如果是小于,则返回一个函数。
const definerCurry = (func,...args)=>{
//获取参数个数
const fnLen = func.length
return (...args)=>{
// 搜集参数
innerArgs = args.concat(innerArgs)
//参数未搜集足的话,继续递归搜索
if(innerArgs.length<fnlen){
return defineCurry.call(this,func,...innerArgs)
}else{
func.apply(this,innerArgs)
}
}
}
const add = defineCurry((num1,num2,num3)=>{
console.log(num1,num2,num3,num1+num2+num3)
})
add(1)(2)(3) // 1 2 3 6