闭包的理解-from my own opinion

闭包,说起来那么难,其实理解了作用域,那么理解闭包就容易多了。

全局环境,局部环境,这两个概念很好理解了。那么要深入理解下函数的局部环境。

函数的局部环境,也就是说在一个函数内定义的变量,这个变量只能在该函数内部进行调用。

还要记住一点,父级函数内声明的变量,可以在子函数内进行调用;反之不可以。 

明白以上两点,那么闭包就差不多了。

下面是给出的实例:

function outer() {  //声明父函数
        var num = 33;

        function inner() {  //声明子函数
            return num;
        };
        return inner();
    };

    var obj = outer();
    alert(obj);  //返回值是 33

 抽象成概念的话:

由于作用域的关系,JS全局环境不能访问函数内声明的局部变量。

那么闭包提供了一种途径,可以使外部环境获取到函数内声明的局部变量。

假设一个functionA,内部声明了一个functionB, 那么通过function B ,外部环境可以访问到functionA内定义的变量。

原文地址:https://www.cnblogs.com/new-dream-new-hope/p/5324388.html