闭包

什么是闭包?

  1、密闭的容器,类似于set,map容器,存储数据的

  2、闭包是一个对象,存放数据的格式,key:value

形成的条件:

  1、函数嵌套

  2、内部函数引用外部函数的局部变量

闭包的优点:

  延长外部函数局部变量的生命周期

闭包的缺点:

  容易造成内存泄漏,老是不销毁

注意点:

  1、合理使用闭包

  2、用完闭包要及时清除(销毁)

案例一:请结合断点调试

 1 function fun(){
 2     var count = 1;
 3     return function(){
 4         count++;
 5         console.log(count);
 6     }
 7 }
 8 var fun2 = fun();
 9 fun2(); //2
10 fun2(); //3

案例二:请结合断点调试

 1 function fun(n,o){
 2     console.log(o);
 3     return {
 4         fun:function(m){
 5             return fun(m,n)
 6         }
 7     }
 8 }
 9 var a = fun(0); //闭包发生在a上,闭包对象存储在a上,a上的n是没变的
10 a.fun(1); //0
11 a.fun(2); //0
12 a.fun(3); //0
13 
14 var b = fun(0).fun(1).fun(2).fun(3).fun(4); //undefined,0,1,2,3,4,;闭包发生在每一个新的对象上
15 
16 var c = fun(0).fun(1);  //闭包发生在c上,
17 c.fun(2); //1
18 c.fun(3); //1
奔跑的蜗牛
原文地址:https://www.cnblogs.com/xiaoyue-/p/10656065.html