js 推薦閉包一些實用的方法和一些注意事項(持續更新)

1.閉包實用方法

  1. 匿名自執行函數javascript

    咱們在實際狀況下常常遇到這樣一種狀況,即有的函數只須要執行一次,其內部變量無需維護,那麼咱們可使用閉包:java

    如頁面加載完給多個li改變文本   閉包

   
//將所有li字體變爲紅色
        (function(){
        var els = document.getElementsByTagName('li');
          for(var i = 0,lng = els.length;i < lng;i++){
             els[i].style.color = 'red';
         } 

      })(); 

  

    

    咱們建立了一個匿名的函數,並當即執行它,因爲外部沒法引用它內部的變量,
    所以els,i,lng這些局部變量在執行完後很快就會被釋放,節省內存!
    關鍵是這種機制不會污染全局對象。模塊化

  

  2. 實現封裝/模塊化代碼函數

   

var person= function(){    

       //變量做用域爲函數內部,外部沒法訪問    
      var name = "default";       

      return {    
         getName : function(){    
             return name;    
         },    
         setName : function(newName){    
             name = newName;    
         }    
      }    
   }();
   console.log(person.name);//直接訪問,結果爲undefined    
   console.log(person.getName());  //default 
   person.setName("loren");    
   console.log(person.getName());  //loren

  

  

 

2. 內存泄露及解決方案

  內容泄漏大多數都是變量循環調用沒有即時的清理,因此一直存在內存裏面。


  清理方法
  
   var obj = { // 定義變量
    x:1
   }
   obj= null; // 清除變量
 

3. 總結閉包的優缺點

  優勢:字體

    可讓一個變量常駐內存 (若是用的多了就成了缺點ui

    避免全局變量的污染 spa

    私有化變量code

  缺點對象

    由於閉包會攜帶包含它的函數的做用域,所以會比其餘函數佔用更多的內存

    引發內存泄露

相關文章
相關標籤/搜索