闭包

标准解释:

  当函数可以记住并访问所在的词法作用域,即使函数是在当前词法作用域之外执行,此时就产生了闭包。

 

我们最为常见的闭包行为就是在函数中的嵌套,子函数可以访问外部作用域的变量,其实这种引用方法是词法作用域的查找规则,只能说是闭包的一部分。

以下代码清晰的展示了闭包

function foo() {
    var a = 2;
    function bar() {
        console.log(a);
    }
    rreturn bar;
}

var baz=foo();
baz();                 //2————闭包效果

在foo()执行后,通常foo()的整个作用域都会被摧毁。但是闭包可以阻止这样的事情发生,bar()拥有涵盖foo()内部作用域的闭包,使得该作用域能够一直存活,以供bar()在之后任何时间进行引用。

bar()依然持有对该作用域的引用,而这个引用就叫做闭包。

posted @ 2016-10-30 23:39  Hiker`  阅读(115)  评论(0)    收藏  举报