闭包的理解-from my own opinion

时间:2022-09-05 16:48:03

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

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

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

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

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

下面是给出的实例:

function outer() {  //声明父函数
var num = 33; function inner() { //声明子函数
return num;
};
return inner();
}; var obj = outer();
alert(obj); //返回值是 33

抽象成概念的话:

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

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

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