美文网首页
实现add(1)(2) =3

实现add(1)(2) =3

作者: 泪滴在琴上 | 来源:发表于2022-04-14 14:56 被阅读0次

光这个的话,可以通过闭包的方式实现了

我给这个加了一个难度,如何才能实现一直调用

    // 题意的答案
   const add = (num1) => (num2)=> num2 + num1;
   
   
   // 我自己整了一个加强版 可以无限链式调用 add(1)(2)(3)(4)(5)....
   function add(x) {
      // 存储和
      let sum = x;
       
      // 函数调用会相加,然后每次都会返回这个函数本身
      let tmp = function (y) {
        sum = sum + y;
        return tmp;
      };
      
      // 对象的toString必须是一个方法 在方法中返回了这个和
      tmp.toString = () => sum
      return tmp;
   }
   
   alert(add(1)(2)(3)(4)(5))

无限链式调用实现的关键在于 对象的 toString 方法: 每个对象都有一个 toString() 方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。
也就是我在调用很多次后,他们的结果会存在add函数中的sum变量上,当我alert的时候 add会自动调用 toString方法 打印出 sum, 也就是最终的结果

作者:Ali2333
链接:https://juejin.cn/post/7079681931662589960
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 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

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

  • 一些常见面试题

    递归实现阶乘 实现 add(2)(3) add(2, 3) 都可以求出结果5的add函数() 提供数组[5, 2...

  • 字节一个面试题

    实现 如下效果add(2,3,4).sumOf()add(2)(3,4).sumOf() // 9add(2)(3...

  • 实现(3).add(2).minus(1)

    Number.prototype 所有 Number 实例都继承自 Number.prototype

  • JS类型转换

    有一道面试题是: 实现一个函数,运算结果可以满足如下预期结果:add(1)(2) //3add(1,2,3)(10...

  • How To Create a Page

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

  • 2021-06-24

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

  • add(1)(2)(3)

    ``` functionadd(){ letres=[...arguments].reduce((a,b)=>{ ...

网友评论

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

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