收藏 分享(赏)

js闭包的理解以及作用.docx

上传人:明湖 文档编号:3926427 上传时间:2021-05-10 格式:DOCX 页数:3 大小:128.81KB
下载 相关 举报
js闭包的理解以及作用.docx_第1页
第1页 / 共3页
js闭包的理解以及作用.docx_第2页
第2页 / 共3页
js闭包的理解以及作用.docx_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、JS闭包1.闭包每次看到jQuery的时候,首先想到的就是闭包。这是个常谈的问题了。今天重新回忆了一下闭包。什么是闭包?当有一个函数想要访问另一个函数内部的变量,这个是访问不了的。所有我们要用闭包来访问。所以简单的来说,闭包就是连接函数内部和外部的一座桥梁,通过闭包我们能够访问其他函数内部的变量1.1作用域 想了解闭包,首先要知道作用域。最简单来说:全局变量和局部变量。全局变量(Global variable):可以在脚本的任何位置被引用。 局部变量(Local variable):只存在于声明它的那个函数的内部,这个函数之外是无法引用的。 使用var声明的变量在当前作用域里面才起作用,未使用

2、var申明的变量,不管在任何地方声明的,都是全局变量。用var声明的变量不一定是局部变量1.2闭包的作用 闭包最大的作用就是全局变量私有化。在上面讲过闭包能够访问其他函数内部的变量,还有一个就是能后永久的把一个变量保存在当前作用域中。不会随着函数调用完之后会被JavaScript特有的垃圾回收机制回收。2-1.案例本文我们以闭包两种的主要形式来学习 函数作为返回值在这段代码中,a()中的返回值是一个匿名函数,这个函数在a()作用域内部,所以它可以获取a()作用域下变量name的值,将这个值作为返回值赋给全局作用域下的变量b,实现了在全局变量下获取到局部变量中的变量的值2-2再来看一个闭包的经典

3、例子一般情况下,在函数fn执行完后,就应该连同它里面的变量一同被销毁,但是在这个例子中,匿名函数作为fn的返回值被赋值给了fn1,这时候相当于fn1=function()var n = 0 . ,并且匿名函数内部引用着fn里的变量num,所以变量num无法被销毁,而变量n是每次被调用时新创建的,所以每次fn1执行完后它就把属于自己的变量连同自己一起销毁,于是乎最后就剩下孤零零的num,于是这里就产生了内存消耗的问题3-1最后总结一下闭包的好处与坏处好处保护函数内的变量安全 ,实现封装,防止变量流入其他环境发生命名冲突在内存中维持一个变量,可以做缓存(但使用多了同时也是一项缺点,消耗内存) 匿名自执行函数可以减少内存消耗坏处其中一点上面已经有体现了,就是被引用的私有变量不能被销毁,增大了内存消耗,造成内存泄漏,解决方法是可以在使用完变量后手动为它赋值为null; 其次由于闭包涉及跨域访问,所以会导致性能损失,我们可以通过把跨作用域变量存储在局部变量中,然后直接访问局部变量,来减轻对执行速度的影响

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 网络技术 > 程序设计

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报