闭包是什么
闭包就是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是因为函数是复杂类型,赋值给的是地址