什么是柯里化
把一个接收多个参数的函数,设计成一个 1、接收单一参数的函数 2、并返回一个能够接收剩余参数的新函数,最后返回结果
举个例子
普通函数:
const add = (a, b, c) => {
return a + b +c;
}
柯里化函数:
const curry_add = (a) => {
return (b) => {
return (c) => {
return a + b + c;
}
}
}
递归实现
const curry_add = (a) => {
let num = a || 0;
const item = (b) => {
num += b;
return item;
};
item.toString = () => num;
return item;
}
console.log(curry_add(1)(2)(3).toString());
不定参数
const curry_add = (...a) => {
let num = a.reduce((t, c) => t + c);
const item = (...b) => {
num += b.reduce((t, c) => t + c);
return item;
};
item.toString = () => num;
return item;
}
console.log(curry_add(1,2)(2, 3)(3, 4).toString());
网友评论