闭包

71 阅读1分钟

定义:

外层函数返回一个内层函数;
内层函数引用外层函数中的变量;

个人理解

主要改变了函数内部词法作用域的关系,使得函数外可以反问函数内部的私有内容
由于其会返回内层函数,内层函数又引用外层函数的变量,导致外层函数执行完后并不会被垃圾回收,因为内层函数由winodw引用,外层函数变量又由内层函数引用

好处: 可以使用闭包做模块化处理;

直接上代码:

    function outFun() {
        var a = 1
        return function innerFun() {
            console.log(a)
        }
    }
    var bar = outFun()
    bar() // 1

注意: (function(){}())自调函数不是闭包,因为其函数不是在其本身词法作用域外执行的;