js闭包
var add = (function () {
var counter = 0;
return function () {counter += 1; return counter;}
})();
(function () {
var counter = 0;
return function () {counter += 1; return counter;}
})();这个东西表示运行一遍外部函数,由于其返回值也是一个函数,所以add表示返回的那个内部函数;
故调用add的时候可以实现自增,且其能访问外部函数的变量counter。
例子解释
变量 add 的赋值是自调用函数的返回值。
这个自调用函数只运行一次。它设置计数器为零(0),并返回函数表达式。
这样 add 成为了函数。最“精彩的”部分是它能够访问父作用域中的计数器。
这被称为 JavaScript 闭包。它使函数拥有“私有”变量成为可能。
计数器被这个匿名函数的作用域保护,并且只能使用 add 函数来修改。
闭包指的是有权访问父作用域的函数,即使在父函数关闭之后。
----------------------------------------------要成为高手------------------------------------------------