投放本站广告请联系:
extjscn#126.com
Javascript闭包(Closure)
Closure中文翻译为闭包.字面上来理解就是"封闭的包".(这是一句废话)
闭包是什么?
书面解释为: 所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
我认为闭包就是能够读/写函数内部的某些变量的子函数,并将这些变量保存在内存中.
闭包的作用
上面的概念中已经提到过,主要就是为了读/写函数内部的某些变量,并将它保持在内存中.可能这样讲未必这么容易理解,下面让我们来看一些例子:
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会一直驻留在内存当中.如果这种方法使用频繁,那么很容易就把机器的内存消耗完.因此建议能用函数的地方就尽量使用函数,而不要使用闭包.
- 关键字:
- 要发表评论,请先登录