JavaScript闭包实现计数器
因为javascript没有局部作用域,所以可以通过以下的方法实现一个计数器:
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
add();
add();
add(); // 结果为3
解析:
- 代码从上往下执行 var add = …的时候会执行一次counter的初始化和add的初始化
- counter初始化为0,add初始化为一个匿名函数 function () {return counter += 1;}
- 执行一次add,counter+1