• 闭包


    什么是闭包?
    函数嵌套函数,闭包中的变量不会被垃圾回收机制回收;
    闭包是一个有权访问另一个函数作用域中变量的函数;

    闭包有什么好处?变量常驻内存;避免全局变量污染;模块化代码

    1 //~~~一般
    2 function aaa(){
    3     var a = 1;
    4     a ++;
    5     alert(a);
    6 }
    7 aaa();//2
    8 aaa();//2
     1 //~~~常驻内存
     2 function aaa(){
     3     var a = 1;
     4     return function(){
     5         a ++;
     6         alert(a);
     7     }
     8 }
     9 var bbb =aaa();
    10 bbb();//2  >>  常驻内存
    11 bbb();//3
     1 //~~~改造
     2 var aaa =(function(){
     3     var a = 1;
     4     return function(){
     5         a ++;
     6         alert(a);
     7     }
     8 })();//先自执行一次
     9 aaa();//2
    10 aaa();//3
     1 //~~~私有方法,模块化代码
     2 var aaa =(function(){
     3     var a = 1;
     4     function bbb(){
     5         a ++;
     6         alert(a);
     7     }
     8     function ccc(){
     9         a ++;
    10         alert(a);
    11     }
    12     return {
    13         b : bbb,
    14         c : ccc
    15     };
    16 })();//先自执行一次
    17 aaa.b();
    18 aaa.c();
     1 //~~~常用
     2 var aLi = document.getElementsByTagName("li");
     3 for(var i = 0;i < aLi.length;i ++){
     4     // aLi[i].onclick = (function(i){
     5     //     return function(){
     6     //         console.log(i);
     7     //     }
     8     // })(i);//先自执行一次
     9 
    10     (function(i){
    11         aLi[i].onclick = function(){
    12             console.log(i);
    13         };
    14     })(i);
    15 }

    IE下内存泄漏

    1 //~~~way1
    2 var oDiv = document.getElementById("div1");
    3 var id = oDiv.id;
    4 oDiv.onclick = function(){
    5     alert(id);
    6 };
    7 oDiv = null;
    1 //~~~way2
    2 var oDiv = document.getElementById("div1");
    3 oDiv.onclick = function(){
    4     alert(oDiv.id);//互相引用引发内存泄漏
    5 };
    6 window.onunload = function(){
    7     oDiv.onclick = null;
    8 };
  • 相关阅读:
    AFN的使用(待整理)
    [转]文件上传进度显示
    图片上传在线预览
    Mysql中文乱码,修改字符集
    struts2 实现自定义标签
    设置HTML和JSP页面不缓存的方法
    Spring framework3.2整合hibernate4.1报错:No Session found for current thread
    Java用SAX解析XML
    js操作Cookie
    php创建缩略图
  • 原文地址:https://www.cnblogs.com/jiujiaoyangkang/p/5879384.html
Copyright © 2020-2023  润新知