Javascript闭包(Closure)

 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

你可能感兴趣的:(表达式)