js闭包作用(避免使用全局变量)
js闭包作用(避免使用全局变量)
一、总结
1、优点::可以把局部变量驻留在内存中,可以避免使用全局变量;
2、缺点:也有占用更多内存的缺点,用完要及时让垃圾回收器回收 fn=null //应及时解除引用,否则会占用更多存
3、闭包两种访问方式会有不同结果,()()双括号访问方式会出错,先赋值后的单括号访问方式是对的
二、js闭包作用
闭包 闭包的相关概念
- 闭包的英文单词是closure,是指有权访问另一个函数作用域中变量的函数。
- 在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。内层的函数可以使用外层函数的所有变量,即使外层函数已经执行完毕。
- 这是JavaScript中非常重要的一部分知识,因为使用闭包可以大大减少我们的代码量,使我们的代码看上去更加清晰等等,总之功能十分强大。
注:这些概念了解即可,接下来我们将通过实例来进行了解。
闭包的相关知识点
- 常见的方式是在函数内部创建另一个函数
- 闭包的第一个用途:通过闭包可以访问局部变量
- 闭包的第二个用途:可以让局部变量的值始终保持在内存中
- 优点:可以把局部变量驻留在内存中,可以避免使用全局变量;
全局变量在复杂程序中会造成许多麻烦(比如命名冲突,垃圾回收等),所以推荐使用私有的,封装的局部变量。而闭包可以实现这一点。
- 缺点:由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更多的内存;所以过度使用闭包会导致性能下降;
- 优点:可以把局部变量驻留在内存中,可以避免使用全局变量;
- 循环函数中的匿名函数和闭包问题
三、代码
1 <!DOCTYPE html> 2 <html lang="zh-cn"> 3 <head> 4 <meta charset="utf-8"> 5 <title>课堂演示</title> 6 </head> 7 <body> 8 <script> 9 /* 10 // 通过全局变量来累加 11 var num= 100; 12 13 function add() { 14 15 alert(++num); 16 17 } 18 19 add(); 20 add(); 21 add(); // 每执行函数一次,累加一次; 22 23 // 通过局部变量无法实现累加 24 function add(){ 25 var num= 100; // 这里改为局部变量; 26 alert(num++); 27 }; 28 29 add();add();add(); 30 */ 31 32 // 通过闭包实现局部变量的累加 33 34 function add(){ 35 36 var num= 100; // 这里改为局部变量; 37 38 return function(){ 39 num++; 40 alert(num); 41 } 42 43 }; 44 45 // add()();add()();add()();//这种调用方式会出错,因为每次调用 num都会初始化一次;三次得到的结果一样 46 47 var fn=add()//只在这里初始化一次,后边调用的时候执行的是里边的匿名函数 48 49 fn();fn();fn(); 50 51 fn=null //应及时解除引用,否则会占用更多存 52 </script> 53 </body> 54 </html>
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-10-30:27岁,宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672