实现求和函数 add

发布于 2022-09-21 12:39:18 字数 1134 浏览 183 评论 0

求和函数的用法:

add(1, 2, 3, 4, 5);
add(1)(2)(3)(4)(5);
add(1, 2)(2, 3, 5);

1、用闭包抑制变量

// 实现方法1,用闭包抑制变量,保存参数,当参数达到一定的个数进行求和操作
const add = (function (length) {
  let allArgs = [];
  function _add (...args) {
    allArgs = [...allArgs, ...args];
    if (allArgs.length >= length) {
      let res = allArgs.reduce((prev, cur) => prev + cur, 0);
      allArgs.length = 0
      return res;
    } else {
      return _add;
    }
  }
  return _add
})(5)

2、用偏函数创建一个符合参数个数的求和函数

const curry = func => {
  // 判断参数是否达到长度,没有到达长度会进行参数合并然后递归调用
  const g = (...allArgs) => allArgs.length >= func.length ? func(...allArgs) : (...args) => g(...allArgs, ...args)
  return g
}
// 创建一个两个数求和的函数,根据需要创建符合才是个数的的求和函数
const foo = curry ((a, b) => {
  return a + b
})

3、用 bind 进行无限次的参数绑定,最后单独调一个方法执行

function add (...args) {
  let _add = add.bind(null, ...args);
  _add.result = function () {
    return args.reduce((prev, curr) => prev + curr, 0)
  }
  return _add
}

console.log(add(1, 2)(3).result())

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

冧九

暂无简介

文章
评论
26 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文