Closure中文翻译为闭包.字面上来理解就是"封闭的包".(这是一句废话)
闭包是什么?
书面解释为: 所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
我认为闭包就是能够读/写函数内部的某些变量的子函数,并将这些变量保存在内存中.
闭包的作用
上面的概念中已经提到过,主要就是为了读/写函数内部的某些变量,并将它保持在内存中.可能这样讲未必这么容易理解,下面让我们来看一些例子:
1,读取警察的生命值
view sourceprint?01.functionPoliceMan() {02.//定义初始生命值03.varlifeEnergy = 100;04.//显示当前生命值05.functionshowLifeEnergy() {06.alert(lifeEnergy);07.}08.returnshowLifeEnergy;09.}10. 11.//创建一个警察12.varpm = newPoliceMan();13.//显示当前生命值14.pm();2,读写/保存 警察的生命值view sourceprint?01.functionPoliceMan() {02.//定义初始生命值03.varlifeEnergy = 100;04.//中弹减少生命值05.InBullet = function(){06.lifeEnergy -= 1;07.}08.//显示当前生命值09.functionshowLifeEnergy() {10.alert(lifeEnergy);11.}12.returnshowLifeEnergy;13.}14. 15.//创建一个警察16.varpm = newPoliceMan();17.//显示当前生命值18.pm();19.//中弹减少生命值20.InBullet();21.//显示当前生命值22.pm();注意事项
由以上例子我们可以看到警察的生命值变量lifeEnergy会一直驻留在内存当中.如果这种方法使用频繁,那么很容易就把机器的内存消耗完.因此建议能用函数的地方就尽量使用函数,而不要使用闭包. 作者:肥占
出处:http://extjs.org.cn
本文版权归作者和ExtJs中文资讯站共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
http://extjs.org.cn/node/400
转载于:https://blog.51cto.com/huqianhao/956486
本文详细介绍了JavaScript中闭包的概念及其应用场景,并通过具体示例展示了如何利用闭包读取和修改函数内部变量。
1035

被折叠的 条评论
为什么被折叠?



