回到頂部

js-閉包

時間:4年前   作者:lishan   瀏覽:177   [站內原創,轉載請注明出處]

標簽: JavaScript  

1.什么是閉包
函數嵌套函數,內部函數可以引用外部函數的參數和變量,參數和變量不會被垃圾回收機制給收回
function a(x){
   var y=1;
   function b(){
      alert(x);
      alert(y);
   }
}
a()
js中的垃圾回收機制
function aa(){
   var a=1;
}
aa();
2.閉包有什么好處?應用在那里
 好處:1.希望一個變量長期停留在內存中
       2.可以避免全局變量的污染
       var a=1;
       function aaa(){
          a++;
          alert(a);
       }
       改進
       function aaa(){
          var a=1;
          return function(){
              a++;
              alert(a);
          }
       }
       var b=aaa();
       b();
       b();
       3.私有成員的存在
       var aaa=(function(){
          var a=1;
          function bbb(){
             a++;
             alert(a);
          }
          function ccc(){
             a++;
             alert(a);
          }
          return {
             b:bbb,
             c:ccc
          }
       })()
       //應用
       1.模塊化代碼
       2.在循環中找到對應元素的索引
       <ul>
          <li>111</li>
 <li>222</li>
 <li>333</li>
       </ul>
       var ali=document.getElementByTagName('li');
       for(var i=0;i<ali.length;i++){
          ali[i].onclick=function(){
      alert(i);
 }

 (function(i){
    ali[i].onclick=function(){
      alert(i);
    }
 })(i);

 ali[i].onclick=(function(){
     return funciton(){
        alert(i);
     }
 })(i);
       }
3.閉包需要注意的地方
在IE下有內存泄漏
window.onload=function(){
     var odiv=document.getElementById("div1");
     odiv.onclick=funciton(){
          alert(odiv.id);
     }
     //第一種方法
     window.onunload=function(){
        odiv.onclick=null;
     }
     //第二種方法
     var odiv=document.getElementById("div1");
     var id=odiv.id;
     odiv.onclick=function(){
         alert(id);
     }
     odiv=null;
}

內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。

評論努力加載中...
暫無評論
暫無評論

手機掃碼閱讀

熱門相關

加載中...
關于我們   聯系我們   申請友鏈   贊助記錄   站點地圖
? 2014 - 2017 www.1255315.live All Rights Reserved. 京ICP備14042174號-1
本站遵循 CC BY 4.0 協議,轉載請注明出處 。
辽宁十一选五走实图 福建快3最大遗漏数据 江西快3走势 什么股票配资平台靠谱 今日股票大盘指数多 广西快乐十分21选5下载 pk10开奖视频 极速赛车开奖官网1 海螺水泥股票 辽宁快乐12 黑龙江p62开奖数据