我可以使用JavaScript Closures添加数字吗?

时间:2016-05-07 12:41:43

标签: javascript closures

如何创建一个闭包函数,它总结所有传递的参数,比如 this

JMenuItem

我想要一种通用的方法来实现这一目标。

1 个答案:

答案 0 :(得分:4)

这里有重复,可能有更好的例子,但我现在找不到。您需要创建一个闭包来跟踪总和,然后返回 add 函数。给它 valueOf toString 方法,以便它可以在其他操作中使用:

var add = (function() {
  var sum = 0;
  function add(n) {
    sum += +n || 0;
    return add;
  }
  add.valueOf = function(){
    return sum;
  }
  add.toString = valueOf;
  return add;
}());

document.write(add(1)(2)(3)(-2)); // 4

document.write('<br>' + add(2)(1) * 2); // 14

document.write('<br>' + add( -add())); // 0