zoukankan      html  css  js  c++  java
  • 闭包的有点以及出现的内存泄露2016/4/12

    (function(){
    alert(1);
    })();

    按照正常的写法会出现i都为3因为for循环很快结束了

    window.onload = function(){var aLi = document.getElementsByTagName('li');

    方法1: for(var i=0;i<aLi.length;i++){

         (function(i){

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

    方法2:

        for(var i=0;i<aLi.length;i++){


        aLi[i].onclick = (function(i){

        eturn function(){
        alert(i);
          }
    })(i);


    }

    };

    通过吧i放在函数中传进去这样i会保留在内存中i,因此结果就是0,1,2

    简单来讲就是:方法套方法,不影响外面的变量,方法里面的变量会被释放掉。

    //IE下会引发内存泄漏

    /*window.onload = function(){
    var oDiv = document.getElementById('div1');

    oDiv.onclick = function(){
    alert(oDiv.id);
    };

    window.onunload = function(){
    oDiv.onclick = null;
    };

    };*/

    window.onload = function(){
    var oDiv = document.getElementById('div1');

    var id = oDiv.id;

    oDiv.onclick = function(){
    alert(id);
    };

    oDiv = null;

    };

  • 相关阅读:
    python 生成器和推导式
    python 函数名 ,闭包 ,迭代器
    python 函数
    python BMI指数
    python 实现购物车的优化
    python 文件操作
    python set集合 深浅拷贝(难点)
    css中的float和position
    css一些简单的例子
    SQL测试题
  • 原文地址:https://www.cnblogs.com/hduhdc/p/5381990.html
Copyright © 2011-2022 走看看