闭包

什么是闭包 ?
函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回。

function aaa(a){
var b = 5;
function bbb(){
a++;
b++;
alert(a);
alert(b);
}
return bbb;
}
var ccc = aaa(2);
ccc();
ccc();
改写成封闭函数的形式:
var ccc = (function(a){
var b = 5;
function bbb(){
a++;
b++;
alert(a);
alert(b);
}
return bbb;

})(2);

ccc();
ccc();

用处 :
1、将一个变量长期驻扎在内存当中,可用于循环中存索引值。

<script type="text/javascript">
window.onload = function(){
var aLi = document.getElementsByTagName('li');
for(var i=0;i<aLi.length;i++)
{
(function(i){
aLi[i].onclick = function(){
alert(i);
}
})(i);
}
}
</script>
......
<ul>
<li>111</li>
<li>222</li>
<li>333</li>
<li>444</li>
<li>555</li>
</ul>

2、私有变量计数器,外部无法访问,避免全局变量的污染。

<script type="text/javascript">

var count = (function(){
var a = 0;
function add(){
a++;
return a;
}

return add;

})()

count();
count();

var nowcount = count();

alert(nowcount);

</script>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 变量作用域 变量作用域指的是变量的作用范围,javascript中的变量分为全局变量和局部变量。 1、全局变量:在...
    奋斗的老王阅读 767评论 0 49
  • 详解js闭包 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实...
    frankgo阅读 4,609评论 0 3
  • 封闭函数是javascript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数。 一般定义的函数和执...
    飘零_0f71阅读 79评论 0 0
  • 什么是闭包函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回;闭包的用途:可以存...
    暴走的金坤酸奶味阅读 220评论 0 0
  • 余杭区神学生联谊会 2019年1月15日余杭区基督教神学生在临安太湖源举办读书...
    岁月留痕SZR阅读 603评论 0 4