闭包现象

2018-04-09  本文已影响0人  中建云筑股份有限公司
IE6时代有bug,闭包会造成内存泄漏,这个现在已经无须考虑了。
其次,闭包本身不会造成内存泄漏,但闭包过多很容易导致内存泄漏。

闭包 一 : 访问变量局限性大,不能自由访问。

function show1() {
         var a = 10;
        function show2() {
           console.log(a)
         }
  show2();
}
show1();

闭包 二 : 可以自由访问。

function show() {
         var a = 10;
          return:  function() {
           console.log(a)
         }
}
show()();

常见闭包一般出现在DOM节点操作中,看下面典型例子!

为每一个li添加点击事件,并且弹出他所在ul中的位置。

<ul id="list">
    <li>aaa</li>
    <li>aaa</li>
    <li>aaa</li>
</ul>

var  lis=document.getElementById("list").getElementsByTagName("li");
for(var i=0;i<lis.length;i++){
   lis[i]._index=i;//为每个li添加一个属性并且保存他的所在的位置。
   lis[i].onclick=function(){
          alert(i)//无论你点那个,弹出的都是3!
         alert(this._index);//可以弹出相应的位置!this指你事件触发者.即你点击的 li !
    }
}

其实闭包现象随处可见,虽然他很容易出问题且不容易调试

所以你也可以去试试啦,听着很牛逼的闭包,其实也没什么,哈哈哈哈。。。。

上一篇下一篇

猜你喜欢

热点阅读