什么是闭包?
是指有权访问另一个函数作用域中的变量的函数,常见的创建方式:在一个函数内部创建另一个函数。
你可以将闭包看作“记忆”并在函数运行完毕后继续访问这个函数作用域(其变量)的一种方法
--《你不知道的JavaScript》 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。
function foo () {
var a = 2;
function bar () {
console.log(a);
}
bar();
}
foo();
问:如果函数A里面的函数B没有调用函数A里面的变量,那么函数B算是闭包吗?
最后
闭包在js中无处不在,但是不容易识别它,也不好描述。直到被面试官一问,才知道自己对闭包理解不够透彻,单单理解函数里面创建了函数并引用了变量。其实,闭包是跟作用域有密切关系,理解闭包重点理解作用域链。