闭包,简单来说就是可以读取其他函数内部变量的函数。只要满足这一点的函数,都可以叫闭包。
1 | function example() { |
这里就是典型的从 function example 外部访问了内部的 变量 n. 这就是闭包
1 | function example1(){ |
上面的代码中第一个” result(); “执行完以后,输出结果 “1”,第二的” result(); “执行完以后,输出结果 “2”,这就证明了,函数 example1 中的局部变量n一直保存在内存中,并没有在第一个” result(); “执行完以后被自动清除;才能在执行第二个”result(); “完以后,输出结果 “2”,如果这样就容易造成我们平时所说的全局空间污染。
还需要注意的是,上面的 Add=function(){n+=1}
这部分代码,一看这家伙居然没有名字(匿名函数),而且,变量还是没通过 var 去命名的,所以呢,就定义成了一个全局变量,所以外部函数当然可以对它”拳打脚踢”的操作咯;所以就有了Add();
执行以后,第二个 result();
才能实现 n 的累加输出 “2”。