欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-02 12:41:12
//定义自增计数器,初始值是0,步长是1 var add = (function(){ var counter =0; return function () {counter += 1; return counter;} })(); //调用,每次自增1 add(); //值为1 add(); //... ......
//定义自增计数器,初始值是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()时,已经有了实例了,只是执行默认的返回函数。
  不一定对,不过应该有助于记忆。