4.柯里化
柯里化
题目
sum(1)(2).value()、sum(1,2).value()都要输出 3,就是个柯里化。
示例
console.log(sum(1)(2).value()); // 输出: 3
console.log(sum(1, 2).value()); // 输出: 3
提示
DETAILS
柯里化函数:sum 接受任意数量的参数,并返回一个新函数 innerSum。这个新函数也能够接收更多的参数。
value 方法:innerSum 对象有一个 value 方法,用于计算所有传入参数的总和。使用 reduce 来累加数组中的数字。
调用示例:可以使用 sum(1)(2).value() 或 sum(1, 2).value() 两种方式来获取结果。
参考答案
DETAILS
<script>
function sum(...args) {
const innerSum = (...nextArgs) => {
// 递归调用来支持柯里化
return sum(...args, ...nextArgs);
};
innerSum.value = () => {
// 计算所有传入参数的总和
return args.reduce((acc, curr) => acc + curr, 0);
};
return innerSum;
}
// 示例使用
console.log(sum(1)(2).value()); // 输出: 3
console.log(sum(1, 2).value()); // 输出: 3
</script>