函数柯里化是一种将多个参数的函数转换为一系列接受单个参数的函数的技术。
通过函数柯里化,我们可以实现一个不定参的求和方法。
下面是使用函数柯里化实现不定参求和的示例代码:
function sum(...args) {
if (args.length === 0) {
return 0;
} else if (args.length === 1) {
return args[0];
} else {
return args[0] + sum(...args.slice(1));
}
}
const curriedSum = (...args) => {
if (args.length >= 2) {
return sum(...args);
} else {
return (...rest) => curriedSum(...args, ...rest);
}
};
console.log(curriedSum(1, 2, 3)); // 输出 6
console.log(curriedSum(4)(5, 6)(7)); // 输出 22
console.log(curriedSum(10)()); // 输出 10
console.log(curriedSum()); // 输出 0
在上述代码中,我们定义了 sum 函数来执行求和操作。
然后,我们使用箭头函数 curriedSum 来实现函数柯里化。
如果传递给 curriedSum 的参数个数大于等于 2,则直接调用 sum 函数进行求和。
否则,返回一个新的函数,该函数接受剩余的参数,并继续调用 curriedSum。
通过这种方式,我们可以连续地使用括号来传递参数,实现不定参的求和操作。