CHEYNE CHEYNE
  • 注册
  • 登录
  • 分类
    • 技术
    • 游戏
    • 生活
  • 动态
  • 留言板
  • 链接
    • 社交媒体
    • 友情链接
    • 站点导航
  • CHEYNE 导航
首页 › 技术 › 实现 sum(1)(2)(3)(...n)

实现 sum(1)(2)(3)(...n)

cheyne
7月前技术
306 0 0
function sum(x) {
  let num = x;
  let tmp = function(y) {
    num = num + y;
    return tmp;
  }
  tmp.toString = function() {
    return num;
  };
  return tmp;
}

console.log(sum(1)(2)(3)(4));  // 10

// others
const sum = a => b => b ? sum( a + b ) : a;
console.log(sum(1)(2)(3)(4)());
首先要一个数记住每次的计算值,所以使用了闭包,在 tmp 中记住了 x 的值,第一次调用 sum() ,初始化了 tmp,并将 x 保存在 tmp 的作用链中,然后返回 tmp 保证了第二次调用的是 tmp 函数,后面的计算都是在调用 tmp, 因为 tmp 也是返回的自己,保证了第二次之后的调用也是调用 tmp,而在 tmp 中将传入的参数与保存在作用链中 x 相加并付给 num,这样就保证了计算; 但是在计算完成后还是返回了 tmp 这个函数,这样就获取不到计算的结果了,我们需要的结果是一个计算的数字那么怎么办呢,首先要知道 JavaScript 中,打印和相加计算,会分别调用 toString 或 valueOf 函数,所以我们重写 tmp 的 toString 和 valueOf 方法,返回 num 的值;
JavaScript
0
本文系作者 @cheyne 原创发布在 CHEYNE。未经许可,禁止转载。
WordPress 更换域名
上一篇
BBR 加速 CentOS
下一篇
评论 (0)
再想想
聚合文章
Typecho 开启 Gzip
6月前
WordPress 站点健康提示 REST API 遇到了错误
7月前
var let const 区别
7月前
BBR 加速 CentOS
7月前
标签
Chrome CSS Docker Git JavaScript Linux MacOS Nginx Steam Typecho Windows WordPress Yarn Youtrack
相关文章
Typecho 开启 Gzip
WordPress 站点健康提示 REST API 遇到了错误
var let const 区别
BBR 加速 CentOS
关于

🍊Σ(゚д゚lll)前端工程师。

社交媒体
Bilibili Steam
导航
分类 技术 游戏 生活 动态 留言板 链接 社交媒体 友情链接 站点导航 CHEYNE 导航
Copyright © 2019-2021 CHEYNE. 苏ICP备16006033号
  • 分类
    • 技术
    • 游戏
    • 生活
  • 动态
  • 留言板
  • 链接
    • 社交媒体
    • 友情链接
    • 站点导航
  • CHEYNE 导航
热门搜索
  • Youtrack
  • Yarn
  • Nginx
  • CSS
  • JavaScript
  • Linux
  • Windows
  • MacOS
  • Docker
  • Git
  • Chrome
  • Typecho
  • WordPress
  • Steam
cheyne
29 文章
1 评论
3 喜欢
  • 0
  • 0
  • Top