美文网首页程序员
Js实现add(1)(2)

Js实现add(1)(2)

作者: shaocong_mo | 来源:发表于2016-12-15 15:19 被阅读0次
源于Codewar上的一道题
A Chain adding function
function add(n){
  var sum = n;
  var tmp = function(m){
    sum += m;
    return tmp;
  }
  tmp.toString = function(){return sum};
  return tmp;
}

首先要一个数记住每次的计算值,所以使用了闭包,在tmp中记住了n的值,第一次调用add(),初始化了tmp,并将n保存在tmp的作用链中,然后返回tmp保证了第二次调用的是tmp函数,后面的计算都是在调用tmp, 因为tmp也是返回的自己,保证了第二次之后的调用也是调用tmp,而在tmp中将传入的参数与保存在作用链中n相加并付给sum,这样就保证了计算。
但是在计算完成后还是返回了tmp这个函数,这样就获取不到计算的结果了,需要的结果是一个计算的数字那么怎么办呢?首先要知道JavaScript中,打印和相加计算,会分别调用toStringvalueOf函数,所以重写tmptoString方法,返回sum的值。

相关文章

  • 2021-06-24

    1、// 用js 实现一个无限极累加的函数, 形如: add(1) //=> 1;add(1)(2) //=> 2...

  • Js实现add(1)(2)

    源于Codewar上的一道题 首先要一个数记住每次的计算值,所以使用了闭包,在tmp中记住了n的值,第一次调用ad...

  • 实现add(1)(2)(3)//6 的效果

    问题: 我们有一个需求,用js 实现一个无限极累加的函数, 形如add(1) //=> 1;add(1)(2) ...

  • 实现类似add(1)(2)(3)的效果

    问题:我们有一个需求,用js 实现一个无限极累加的函数, 形如 add(1) //=> 1; add(1)(2) ...

  • How To Create a Page

    Step 1) Add HTML: Step 2) Add CSS: Step 3) Add JS:

  • JavaScript中valueOf、toString的隐式调用

    先看个有意思的面试题:要求:用JS写个函数add可以实现以下的功能。add(num1)(num2)(num3).....

  • js中的valueOf和toString的隐式调用

    柯里化函数 实现一个函数:add(1,2)(3) -> 6add(1)(2)(3) -> 6add(1)(2)(...

  • 柯里化函数

    // 实现一个add方法,使计算结果能够满足如下预期:add(1)(2)(3) = 6;add(1, 2, 3)(...

  • 实现add(1)(2) =3

    光这个的话,可以通过闭包的方式实现了 我给这个加了一个难度,如何才能实现一直调用 无限链式调用实现的关键在于 对象...

  • mock数据

    1,安装mockjs 文档 yarn add mock.js 2,mock数据的格式

网友评论

    本文标题:Js实现add(1)(2)

    本文链接:https://www.haomeiwen.com/subject/echgmttx.html