闭包

来源:互联网 发布:mobi 阅读软件 编辑:程序博客网 时间:2024/06/04 18:35

什么是闭包?

 能够访问其他函数内部变量的函数

为什么要有闭包?

由于变量的作用域的原因(函数内部能读取全局变量,函数外部无法读取局部变量),为了在函数外部读取局部变量,所以就有了闭包

闭包基于的原理:

函数的作用域链:父函数的变量对子函数的都是可见的

闭包的作用:

1.访问其他函数内部变量2.保护变量不被内存回收机制回收

实现过程

    function outer(){        var m = 2;        function inner(){            console.log(m)        }        return inner;    }    var n = outer();    n()//打印2

用闭包解决循环注册点击事件

    for(i=0;i<divs.length;i++){        divs[i].onclick = function(j){            return function(j){                alert(j)            }        }(i)    }

注意事项

如若操作不当,可能会导致内存泄漏