闭包

闭包是什么
  闭包就是js作用域嵌套所形成的产物

为什么要使用闭包(闭包的特点
  1.变量声明在函数内部,这个变量不会被函数外部污染,让数据更安全
  2.里面的小空间不销毁,延长了变量的生命周期,但也容易造成内存溢出
1 function fn(){
2         var num = 100; //因为全局中的变量容易被覆盖,被攻击,所以使用局部变量.
3         return num;
4     }
5     var num = fn();
6     num +=10;
7     console.log(num); //得到110,但是改变的只是全局变量中的num,函数中的局部变量num仍然是100。
8     //想要在全局改变局部变量,需要使用闭包

怎样形成闭包

 1 // 闭包的形成,就是在一个函数中返回一个子函数,在子函数中使用父函数的变量,在全局中调用子函数
 2 function fn(){
 3     var num = 1; //在父函数中定义变量
 4     return function(){
 5         console.log(++num)
 6     }       
 7 }
 8 var f = fn();
 9 f(); //得到num = 2
10 f(); //得到num = 3
11 f(); //得到num = 4
12 //之所以能改变fn()函数内的a是因为函数是复杂类型,赋值给的是地址
 
原文地址:https://www.cnblogs.com/lry2577/p/12594123.html