js 推荐闭包一些实用的方法和一些注意事项(持续更新)

1.闭包实用方法

  1. 匿名自执行函数

    我们在实际情况下经常遇到这样一种情况,即有的函数只需要执行一次,其内部变量无需维护,那么我们可以使用闭包:

    如页面加载完给多个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. 总结闭包的优缺点

  优点:

    可以让一个变量常驻内存 (如果用的多了就成了缺点

    避免全局变量的污染 

    私有化变量

  缺点

    因为闭包会携带包含它的函数的作用域,因此会比其他函数占用更多的内存

    引起内存泄露





 

转载于:https://www.cnblogs.com/loren1995/p/9214370.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值