Javascript闭包(Closure)
2010-02-27 13:52
267 查看
Closure中文翻译为闭包.字面上来理解就是"封闭的包".(这是一句废话)
闭包是什么?
书面解释为: 所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
我认为闭包就是能够读/写函数内部的某些变量的子函数,并将这些变量保存在内存中.
闭包的作用
上面的概念中已经提到过,主要就是为了读/写函数内部的某些变量,并将它保持在内存中.可能这样讲未必这么容易理解,下面让我们来看一些例子:
1,读取警察的生命值
2,读写/保存 警察的生命值
注意事项
由以上例子我们可以看到警察的生命值变量lifeEnergy会一直驻留在内存当中.如果这种方法使用频繁,那么很容易就把机器的内存消耗完.因此建议能用函数的地方就尽量使用函数,而不要使用闭包.
作者:肥占
出处:http://extjs.org.cn
本文版权归作者和ExtJs中文资讯站共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
闭包是什么?
书面解释为: 所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
我认为闭包就是能够读/写函数内部的某些变量的子函数,并将这些变量保存在内存中.
闭包的作用
上面的概念中已经提到过,主要就是为了读/写函数内部的某些变量,并将它保持在内存中.可能这样讲未必这么容易理解,下面让我们来看一些例子:
1,读取警察的生命值
function PoliceMan() { //定义初始生命值 var lifeEnergy = 100; //显示当前生命值 function showLifeEnergy() { alert(lifeEnergy); } return showLifeEnergy; } //创建一个警察 var pm = new PoliceMan(); //显示当前生命值 pm();
2,读写/保存 警察的生命值
function PoliceMan() { //定义初始生命值 var lifeEnergy = 100; //中弹减少生命值 InBullet = function(){ lifeEnergy -= 1; } //显示当前生命值 function showLifeEnergy() { alert(lifeEnergy); } return showLifeEnergy; } //创建一个警察 var pm = new PoliceMan(); //显示当前生命值 pm(); //中弹减少生命值 InBullet(); //显示当前生命值 pm();
注意事项
由以上例子我们可以看到警察的生命值变量lifeEnergy会一直驻留在内存当中.如果这种方法使用频繁,那么很容易就把机器的内存消耗完.因此建议能用函数的地方就尽量使用函数,而不要使用闭包.
作者:肥占
出处:http://extjs.org.cn
本文版权归作者和ExtJs中文资讯站共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
相关文章推荐
- [转]深入理解JavaScript闭包(closure)
- Javascript闭包(Closure)
- javascript闭包(Closure)初探
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- Javascript闭包(Closure)
- Javascript闭包(closure)1
- 深入理解JavaScript闭包(closure)
- JavaScript闭包(closure)入门: 拿"开发部"和"技术牛"举个例子
- 【转】深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- javascript闭包理解(Closure)
- JavaScript学习总结(十六)——Javascript闭包(Closure)
- Javascript闭包(Closure)代码详解
- 深入理解Javascript闭包(closure)
- 深入理解Javascript闭包(closure)
- 深入理解JavaScript闭包(closure)
- 深入理解JavaScript闭包(closure)
- Javascript闭包(Closure)