"窥探闭包背后的秘密:10张JavaScript奇妙地图"

闭包是指有权访问另一个函数作用域中变量的函数
闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制所收回。
JS中的垃圾回收机制:函数调用完后,函数中的参数和变量,会被垃圾回收机制收回,不再存在

用法:
    模块化代码:减少全局变量的污染
    在循环中直接找到对应元素的索引

闭包需要注意的地方:在IE下可能引发内存泄漏,页面跳转时,变量不会释放,一直存在,造成累加,只有关闭浏览器时,才会释放
    IE下发生内存泄漏的条件:在一个闭包中,内部函数与外部函数互相引用,
如果过多使用闭包,容易导致内存泄露。

闭包的好处:
    希望一个变量长期驻扎在内存当中
    避免全局变量的污染
    私有成员的存在。

闭包

函数定义的同时,马上执行
    (  function(){ ... }  )();

案例:闭包  
function aaa(){
    var a = 1;   //a是局部变量,一直存在于内存中
    return function(){
        a  ;
        alert(a);
    }
}
var b = aaa();
b();  //2
b();  //3
//alert(a);   //a是全局变量,未被定义,避免了全局变量的污染

将函数改写成闭包形式的模块代码
function aaa(){
        var a = 1;
        return function(){
            a;
            alert(a);
        }
}
var b = aaa();
b();  //2
b();  //3
//alert(a);

改写后的模块代码
var aaa = (function(){
        var a = 1;
        return function(){
            a;
            alert(a);
    }
})();
aaa();  //2
aaa();  //3

版权声明:他人将便捷数据网提供的内容与服务用于商业、盈利、广告性目的时,需得注明出处,转载时请附上原文出处链接及本声明。

原文链接:https://www.bian-jie.cn/search/promotion_article/1/19383680.html

点击加入QQ交流群:{{qqQNum}}