在前端开发中,JavaScript 是一种常用的编程语言。要实现一个 sum
函数,使其既支持 sum(x)(y)
的调用方式,也支持 sum(x, y)
的调用方式,你可以使用函数的柯里化(Currying)技术。下面是一个示例实现:
function sum() {
// 如果传入两个参数,直接返回它们的和
if (arguments.length === 2) {
return arguments[0] + arguments[1];
}
// 如果只传入一个参数,返回一个新的函数,等待接收第二个参数
const firstArg = arguments[0];
return function(secondArg) {
return firstArg + secondArg;
};
}
// 测试代码
console.log(sum(3, 4)); // 输出 7,使用 sum(x, y) 的方式调用
console.log(sum(3)(4)); // 输出 7,使用 sum(x)(y) 的方式调用
这个 sum
函数通过检查传入的参数数量来决定它的行为。如果传入两个参数,它直接返回这两个参数的和。如果只传入一个参数,它返回一个新的函数,这个新函数等待接收第二个参数,并在被调用时返回两个参数的和。这样,你就可以使用 sum(x, y)
或 sum(x)(y)
的方式来调用这个函数,并得到相同的结果。