JS中的闭包

【闭包】

是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量

【闭包的特点】

1 函数嵌套函数
2 函数内部可以引用外部的参数和变量
3 参数和变量不会被垃圾回收机制回收

一般函数执行完毕后,局部活动对象就被销毁,内存中仅仅保存全局作用域。但闭包的情况不同!

 1 function fn1(){
 2      var a = 1;
 3      function fn2(){
 4      //可以访问fn1中定义的a值
 5      alert( a++ );
 6         }
 7     fn2();
 8 }
 9 fn1();  //1
10 fn1();  //1   
 1 function fn1(){
 2     var a = 1;
 3     function fn2(){
 4        //可以访问fn1中定义的a值
 5       alert( a++ );
 6     }
 7     return fn2;//
 8 }
 9 var f = fn1();
10 f();  //1 执行完后a还在内存中
11 f();  //2
12 f = null; //a被回收
原文地址:https://www.cnblogs.com/SJBlog/p/5211405.html