问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Javascript中的闭包是什么意思??

发布网友 发布时间:2022-04-24 06:35

我来回答

1个回答

热心网友 时间:2022-05-11 03:49

什么是闭包?
“官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
相信很少有人能直接看懂这句话,因为他描述的太学术。我想用如何在Javascript中创建一个闭包来告诉你什么是闭包,因为跳过闭包的创建过程直接理解闭包的定义是非常困难的。看下面这段代码:
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
这段代码有两个特点:
1、函数b嵌套在函数a内部;
2、函数a返回函数b。
这样在执行完var c=a()后,变量c实际上是指向了函数b,再执行c()后就会弹出一个窗口显示i的值(第一次为1)。这段代码其实就创建了一个闭包,为什么?因为函数a外的变量c引用了函数a内的函数b,就是说:
当函数a的内部函数b被函数a外的一个变量引用的时候,就创建了一个闭包。

闭包有什么作用?
简而言之,闭包的作用就是在a执行完并返回后,闭包使得Javascript的垃圾回收机制GC不会收回a所占用的资源,因为a的内部函数b的执行需要依赖a中的变量。这是对闭包作用的非常直白的描述,不专业也不严谨,但大概意思就是这样,理解闭包需要循序渐进的过程。
在上面的例子中,由于闭包的存在使得函数a返回后,a中的i始终存在,这样每次执行c(),i都是自加1后alert出i的值。
那 么我们来想象另一种情况,如果a返回的不是函数b,情况就完全不同了。因为a执行完后,b没有被返回给a的外界,只是被a所引用,而此时a也只会被b引 用,因此函数a和b互相引用但又不被外界打扰(被外界引用),函数a和b就会被GC回收。

闭包的应用
1、保护函数内的变量安全。以最开始的例子为例,函数a中i只有函数b才能访问,而无法通过其他途径访问到,因此保护了i的安全性。
2、在内存中维持一个变量。依然如前例,由于闭包,函数a中i的一直存在于内存中,因此每次执行c(),都会给i自加1。
以上两点是闭包最基本的应用场景,很多经典案例都源于此。

参考资料:http://zh.wikipedia.org/zh-cn/%E9%97%AD%E5%8C%85_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 录音笔究竟好不好用呢? javascript另类闭包问题 请问,录音笔有什么用? JavaScript中的闭包是用来做什么的? Js编程语言中,什么叫匿名自我调用函数? WEB前端学习五 什么是闭包 javascript 函数中的匿名函数一定是闭包吗? 如何做好计划生育宣教工作 javascript 为什么要使用匿名函数 或者说 匿名闭包 计划生育协会关于争创“五好小级”“五有小组”的几件好事实事 如何做好计划生育生育服务登记工作总结 大家好,调查社会问题作文 1000字,谢谢 适宜张贴在教室得春联 贴春联的活动过程是什么? 新春佳节,家家户户张贴春联有什么作用? 贴对联的由来和寓意是什么? 贴春联的讲究有哪些? 庆祝九九重阳节贺词 九九重阳节祝福短语 九九重阳节祝福语有哪些? 智能录音笔的录音效果好吗? JavaScript 闭包 录音的效果好吗,现在还有必要专门买录音笔么 js闭包和PHP闭包的区别 录音笔好用吗? 买个录音笔有用吗? JAVASCRIPT中的匿名函数指的是没有名字的函数吗,有何作用啊,在代码文本... 录音笔可以作为法律证据吗 js中闭包是什么意思,有什么作用,最好举例说明啊。 那录音笔什么功能最有用,买的时候需要注意哪些?怎么挑选 javascript中的window.ActiveXObject和闭包是什么意思有什么作用,在... 老罗说的AI录音笔大家有用过吗?录音笔的拾音效果怎么样? 搜狗录音笔录音效果好不好? 讯飞录音笔怎样,有用过的吗? 讯飞智能录音笔录音清晰准确吗?有用过的吗? 智能录音笔学生有用的吗? 高清录音笔真的有用吗 什么牌子的录音笔录音质量最好?怎样知道录音笔效果好,有哪些指标? 微信中的照片怎样插入到美篇制作? 西葫芦是丝瓜吗