函数柯理化
// add的参数不固定,看有几个数字累计相加
function add(a, b, c, d) {
return a + b + c + d;
}
function curry(fn, ...args) {
return function (...innerArgs) {
const finalArgs = args.concat(innerArgs);
if (innerArgs.length === 0) {
// 空参数时返回结果
return fn(...finalArgs);
}
return curry(fn, ...finalArgs); // 继续收集参数
};
}
let fn1 = currying(add, 1, 2); // 3
let fn2 = fn1(3); // 6
let fn3 = fn2(4); // 10
最后更新于
这有帮助吗?