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

  缺点对象

    由于闭包会携带包含它的函数的做用域,所以会比其余函数占用更多的内存

    引发内存泄露

相关文章
相关标签/搜索