js内存泄漏

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script>
      //1.全局变量引起的内存泄漏
        function show(){
          name='fei';//name是全局变量,不会被回收
        }
        //解决方法:加上use strict使用严格模式,会阻止创建的全局变量

    //2.闭包引起的内存泄漏
         function show(){
           let aBtn=document.getElementsByTagName('input');
           aBtn.onclick=function(){//闭包
             //代码
           }
         }
        //闭包会保存函数中的局部变量,不能释放。
        //解决方法:将事件处理函数定义在外部,或删除dom的引用
        //1.将事件处理函数定义在外部
          function handler(){
            //代码
          }
          function show(){
            let aBtn=document.getElementsByTagName('input');
            aBtn.onclick=handler;
          }
        //2.删除dom的引用
        function show(){
          let aBtn=document.getElementsByTagName('input');
          aBtn.onclick=function(){
            //代码
          }
          aBtn=null;
        }
    //3.定时器没有被清除
    //4.没有清理dom元素的引用
    </script>
  </head>
  <body>

  </body>
</html>

 

posted @ 2017-11-07 18:38  逗比煎饼侠  阅读(143)  评论(0编辑  收藏  举报