zoukankan      html  css  js  c++  java
  • 闭包的好处罗列

    好处:
    1.希望一个变量长期驻扎在内存当中
    2.避免全局变量的污染
    3.私有成员的存在
    
    用法:
    1.模块化代码
    2.在循环中直接找到对应元素的索引

    模块化代码

    var aaa = (function(){
    var a = 1;
    function bbb(){ a++; alert(a); } function ccc(){ a++; alert(a); } return { b : bbb, c : ccc } })(); aaa.b(); //2 aaa.c(); //3 alert(a); //报错找不到a,因为这里的a已经私有化了,避免了全局污染

     希望一个变量长期驻扎在内存当中

    function aaa(){
        var a = 1; //程序结束后,这个a的内存不会被释放
        return function(){
            a++;
            alert(a);
        }
    }
    
    var b = aaa();   //或者不这样赋值调用,而是直接aaa()()这样用
    
    b();  //2
    b();  //3
    alert(a);//报错找不到a,因为这里的a已经私有化了,避免了全局污染

    被污染的a

    var a = 1;
    function aaa(){
        a++;
        alert(a);
    }
    
    aaa();  //2
    aaa();  //3
    alert(a);//能够被调用,此时的a为全局

    在循环中直接找到对应元素的索引

    var aLi = document.getElementsByTagName('li');
        
        for(var i=0;i<aLi.length;i++){
        
            (function(i){
            
                aLi[i].onclick = function(){
                    alert(i);
                };
            
            })(i);
        }
    //当然还可以这样指定索引值来完成
    for(var i=0;i<aLi.length;i++){
            aLi[i].index=i;
             aLi[i].onclick =function(){
                 alert(this.index)
             }
        }    

     在IE下引发内存泄露的处理方法

    window.onload = function(){
        var oDiv = document.getElementById('div1');
        
        oDiv.onclick = function(){
            alert(oDiv.id);
        };
        
        window.onunload = function(){ //在最后释放掉内存
            oDiv.onclick = null;
        };
        
    };
  • 相关阅读:
    并发编程(线程)
    并发编程(进程)
    并发编程(操作系统的介绍)
    模块与包
    网络编程
    Django项目的创建与管理和pycharm与Github的秘密
    python解释器配置和python常用快捷键
    代码的调试.运行
    57. 三数之和
    1347. 尾随零
  • 原文地址:https://www.cnblogs.com/Model-Zachary/p/6294741.html
Copyright © 2011-2022 走看看