随记--理解闭包

116 阅读1分钟

什么是闭包?

是指有权访问另一个函数作用域中的变量的函数,常见的创建方式:在一个函数内部创建另一个函数。

你可以将闭包看作“记忆”并在函数运行完毕后继续访问这个函数作用域(其变量)的一种方法
--《你不知道的JavaScript》 当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用域之外执行。

function foo () {
    var a = 2;
    function bar () {
      console.log(a);
    }
    bar();
}
foo();
问:如果函数A里面的函数B没有调用函数A里面的变量,那么函数B算是闭包吗?

最后

闭包在js中无处不在,但是不容易识别它,也不好描述。直到被面试官一问,才知道自己对闭包理解不够透彻,单单理解函数里面创建了函数并引用了变量。其实,闭包是跟作用域有密切关系,理解闭包重点理解作用域链