0
点赞
收藏
分享

微信扫一扫

简单理解一下JavaScript的闭包

老北京的热干面 2022-01-13 阅读 135

给笨蛋鱼自我理解一下 就是 一个函数里写了另一个函数,另一个函数 就是闭包

function foo(){
    var a = 5;
    console.log("foo a:",a);

    function closure(){
        return a;
    }
    return closure;

    // return function(){return a;};
}
var foo_bar = foo(); // foo a: 5
function bar(){
    var a = foo_bar();
    var b = a+5;
    console.log("bar b",b);
}
bar(); // bar b 10

👆 closure就是闭包

如果要用到foo()函数里定义的局部变量a,但是又不能将局部定义成全局(都是全局变量太乱了),这个时候使用闭包

如上例,foo()函数返回值是一个函数,ps:函数名可以作为一个变量直接返回

赋值给foo_bar,此时,foo_bar实际上是就是一个函数 得到了foo()函数里的局部变量a的值,至于这个存储机制,还没学好...

所以此时 在bar()里拿到了a的值,做了运算 正确输出

举报

相关推荐

0 条评论