首页 > 其他 > 详细

关于闭包的理解

时间:2018-03-09 18:39:10      阅读:176      评论:0      收藏:0      [点我收藏+]

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

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

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

 

关于闭包的理解

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!