js闭包计数器及闭包的思考

//定义自增计数器,初始值是0,步长是1
var add = (function(){
  var counter =0;
  return function () {counter += 1; return counter;}
})();

//调用,每次自增1
add(); //值为1
add(); //值为2
add(); //值为3
  为什么只有第一次调用add()时会初始化counter的值呢?思考良久,对比c#里面的类,觉得应该是这样的:
  第一次执行add()时,无实例,然后就会初始化,而以后再执行add()时,已经有了实例了,只是执行默认的返回函数。
  不一定对,不过应该有助于记忆。

若对您有用,请赞助个棒棒糖~

原文地址:https://www.cnblogs.com/shurun/p/11947422.html