关于闭包的理解

Posted livingwolf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于闭包的理解相关的知识,希望对你有一定的参考价值。

某天突然顿悟闭包到底啥意思

在了解闭包之前必须先理解下垃圾回收机制,执行先后文的顺序。

function foo() {
   

    function bar() {
        var a = 20;
        var b = 30;
        return a + b;
    }

    return bar;
}

var bar = foo();
bar();    

在执行上下文顺序时候:

global  -> global, foo(foo并没有执行,因此被垃圾回收) -> global -> global bar ->global

闭包情况:

function foo() {
    var a = 20;
    var b = 30;

    function bar() {
        return a + b;
    }

    return bar;
}

var bar = foo();
bar();

上下文执行顺序:

global -> global, foo ->global, foo, bar(按理说此时foo应该被回收,但是bar要调用foo里的变量,因此foo被留在内存里,这样就形成了个闭包) -> global

 

以上是关于关于闭包的理解的主要内容,如果未能解决你的问题,请参考以下文章

Javascript关于闭包的个人理解

关于闭包的一点理解

关于闭包的理解(JS学习小结)

关于闭包的理解

关于js里的this指向,函数的prototype,闭包理解

python中对 函数 闭包 的理解