什么是函数柯里化?
函数柯里化主要用于给函数分步传递参数,每次传递参数进行处理,并返回一个更具体的函数来接受剩下的参数,这中间可以嵌套多层,直至返回最后的结果。
实现思路
- 接收一个处理数据的函数。
- 定义一个数组用于接收所有的参数。
- 返回一个函数,如果返回的函数接收的参数的长度是0,则返回fn执行的结果,如果不是0,则将参数push进数组中,并返回函数。
代码实现
// 手写函数柯里化
const curring = function(fn) {
const args = [];
return function result(...rest) {
if (rest.length === 0) {
return fn(...args)
} else {
args.push(...rest);
return result;
}
}
}
const sum = (...arg) => {
return arg.reduce((pre,cur) => {
return pre + cur
},0)
}
curring(sum)(1)(2,5)(3)()