这个js怎么实现

写一个加法函数 sum,支持 sum(1)(2)(3,4)(5,6,7,...)

console.log(sum(1,2,3)(4)) // 输出 10

阅读 1.4k
2 个回答
function sum(...args) {
  let total = args.reduce((t, v) => t + v, 0);
  const next = (...args) => {
    total += args.reduce((t, v) => t + v, 0);
    return next;
  }
  next.valueOf = () => total;
  return next;
}

因为是用valueOf实现最终值的输出,所以最取值时前面要带上+

console.log(+sum(1,2,3)(4))

稍微优化一下 @asseek 的代码

function sum(...args) {
    let total = 0;
    const next = (...args) => {
        total += args.reduce((t, v) => t + v, 0);
        return next;
    }
    next.valueOf = () => total;
    return next(...args);
}

console.log(+sum(1, 2, 3)(4))
//[LOG]: 10 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题