JS闭包

Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量:

1 var n=999;
2 function f1(){
3   alert(n);
4 }
5 f1(); // 999

但是,在函数外部自然无法读取函数内的局部变量

1 function f1(){
2   var n=999;
3 }
4 alert(n); // error

注:函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量!

当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

因为a执行完后,b没有被返回给a的外界,只是被a所引用,而此时a也只会被b引 用,因此函数a和b互相引用但又不被外界打扰(被外界引用),函数a和b就会被GC回收。

原文地址:https://www.cnblogs.com/WebApp-DotNet/p/6237331.html