码迷,mamicode.com
首页 > 其他好文 > 详细

关于闭包的理解

时间:2018-03-09 19:01:53      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:col   keyword   垃圾回收   key   func   log   code   span   lang   

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

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

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

 

关于闭包的理解

标签:col   keyword   垃圾回收   key   func   log   code   span   lang   

原文地址:https://www.cnblogs.com/livingWolf/p/8535282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!