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()时,已经有了实例了,只是执行默认的返回函数。 不一定对,不过应该有助于记忆。