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 函数来修改。

闭包指的是有权访问父作用域的函数,即使在父函数关闭之后。

posted @ 2019-09-26 19:31  Booye  阅读(106)  评论(0编辑  收藏  举报