JavaScript------闭包
var add = (function () {
var counter = 0;
return function () {return counter += 1;}
})();
函数自调用直接执行了一次,创建了counter 变量 并且返回了匿名函数对象给add
add的函数体就是
{
counter+=1;
}
counter并不在add函数体里定义 但是由于add是内嵌函数,可以访问外层函数的变量,所以并没有报错,
而且因为add的原因外层匿名函数并没有被析构掉(JS中不知道叫什么,借用C++的概念,因为JS外物皆对象,把外层函数也看成对象所以用析构来描述它)。counter的值得以持续存在并且更新。
console.log(add());
console.log(add());
console.log(add());
结果:

浙公网安备 33010602011771号