const add = (a, b, c) => a + b + c;
const curry = (fn) => {
let args = [];
//返回一个函数
return function temp(...newArgs) {
args.push(...newArgs);//储存数据
//数组长度和函数形参个数一致
if (args.length === fn.length) {
const val = fn.apply(this, args); //使用fn的方法添加数据
args = [];
return val; //返回最后添加的值
} else {
return temp;
}
}
}
const curryAdd = curry(add);
console.log(curryAdd(1)(2)(3)); // 6
使用函数柯里化实现add(1)(2)(3)
本文介绍了JavaScript中柯里化(Currying)的概念,展示了如何实现一个柯里化函数`curry`,并利用该函数创建了一个`curryAdd`,实现了分步累加的功能。通过`curryAdd(1)(2)(3)`最终得到结果6,揭示了柯里化在函数式编程中的实用价值。


被折叠的 条评论
为什么被折叠?



