【闭包】
是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量
【闭包的特点】
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被回收