写一个方法,使得sum(x)(y)和sum(x,y)返回的结果相同

在前端开发中,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) 的方式来调用这个函数,并得到相同的结果。

posted @ 2025-01-14 09:33  王铁柱6  阅读(28)  评论(0)    收藏  举报