闭包就是一个函数在声明时能够记住当前作用域、父函数作用域、及父函数作用域上的变量和参数的引用,直至通过作用域链上全局作用域,基本上闭包是在声明函数时创建的作用域。
看看小例子:
// 全局作用域
var globalVar = "abc";
function a(){
console.log(globalVar);
}
a(); // "abc"
在此示例中,当我们声明a
函数时,全局作用域是a
闭包的一部分。
变量globalVar
在图中没有值的原因是该变量的值可以根据调用函数a
的位置和时间而改变。但是在上面的示例中,globalVar
变量的值为abc
。
来看一个更复杂的例子:
var globalVar = "global";
var outerVar = "outer"
function outerFunc(outerPara