我是一名Python编码人员,进一步了解Javascript。

由于某种原因,我在理解闭包方面有些困难。我已经生成了简单的Adder函数(即应该执行类似Add(1)= 1,Add(2)= 3 ...)

我一直试图通过console.log /打印所有内容来了解​​幕后情况,但是我对这些功能的不同之处感到困惑,如果它们是:

var makeAdder = function(num){
  var addNum=num;
  var letsAdd = function(num){
    return addNum+=num;
  };
  return letsAdd;
};

var makeAdder = function(numa){
  var letsAdd = function(numb){
    return numa+numb;
  };
  return letsAdd;
};

var a = makeAdder(2);
console.log(a(5));
// should produce 7 at the end


任何资源或帮助将不胜感激!我尚未找到有关“关闭”的好文章/:

最佳答案

不使用闭包的简单加法器函数的解决方案。

function makeAdder(num){
  if(!this.addNum){
    this.addNum=0;
  }
  return this.addNum+=num;
}

console.log("------------makeAdder----------");

console.log(makeAdder(10)); // output - 10
console.log(makeAdder(20)); // output - 30
console.log(makeAdder(30)); // output - 60

关于javascript - Javascript —带简单加法器功能的闭包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36053280/

10-10 11:44