add(1)(2)(3)自身连续调用的实现方

今天面试的时候遇到了这样的一个题目实现add(1)(2)(3)返回6的add函数。

第一个想法就是利用闭包返回函数达到目的代码如下

function add(){
  var arg1 = arguments[0];
  return function(){
    var arg2 = arguments[0];
    return function(){
      var arg3 = arguments[0];
      return arg1*arg2*arg3;
    }
  }
}
复制代码

这个解决方法可以解决这个问题但是当函数调用次数发生变化的时候这个解决方法久嗝屁了!记得原来看过一个文章说的是利用函数的toString()valueOf的重写达到连续调用的例子但是由于时间太久了面试的时候回忆不出来!

回到家后百度了一下代码是这样子的

function add(){
  var sum = arguments[0];
  function temp(){
    sum = sum + arguments[0];
    return temp;
  }
  temp.toString = function(){
    return sum;
  }
  return temp;
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值