闭包是什么?
闭包是指程序中有许多白能量和绑定变量的执行环境。
在我看来就是:程序的代码段允许存在一级函数并且一级函数不能被释放,以及韩你数没有释放之前,外部可以使用一级函数的局部变量。
简单的说闭包就是在外部可以使用局部变量。
闭包的功能:
1、外部可以使用局部变量
2、使函数不能释放
为什么一级函数不能被释放?
因为在一级函数中有一个函数,这个函数使用了一级函数的变量,我们返回了这个函数并创建一个变量接收了。
那么这个函数就不会被js的垃圾回收机制销毁。
闭包的应用:
一般的项目中,闭包的使用比较少。当我们去封装一个第三方库时,会大量使用闭包。
闭包的优缺点:
优点:
1、一个变量可以长期驻扎在内存中
2、 避免全局变量的污染
3、私有成员的存在
缺点:常驻内存,会增大内存的使用量,使用不当很容易造成内存泄漏。
外部会修改局部变量,会大量占用内存,内存不会被释放。
闭包的一种写法:
1 <script> 2 //函数在调用时,会开辟一块内存空间,这块内存空间在函数执行完毕时释放; 3 function fn(){ 4 var a = 1; 5 return function (){ 6 alert(a++); 7 } 8 } 9 10 //a 是fn返回的二级函数 11 var a = fn(); 12 a(); //返回 1 //此时,我们在外界就是用到了fn的局部变量 13 a(); //返回2 14 15 var b = fn(); 16 b();//返回1 17 b();//返回2 18 </script>
闭包的方法还有些欠缺,希望大家能帮我补充一下,谢谢!!!!!