闭包

作者: 海娩 | 来源:发表于2017-11-26 23:20 被阅读0次

    可查找文章:
    js闭包的用途-CSDN博客
    How do javascript closures work?

    什么是闭包?

    通俗来说,就是函数里面定义新函数,就是嵌套函数。

    为什么会用到闭包?

    我们知道作用域的对象访问只能向上,这样外部无法向内部访问

        var foo1 = function () {
          var local = 'local varial';
          (function () {
            console.log(local);
          } ());
        };
        foo1();
      //local varial
    

    而下面的代码就会得到local未定义的异常。

        var foo1 = function () {
            (function () {
                var local = 'local varial';
            }());
            console.log(local);
        };
        foo1();
    
    image.png

    而闭包就可以实现作用域访问内部作用域中变量。这得益于高阶函数的特性:函数可以作为参数或者返回值。

        var foo = function () {
            var bar = function () {
                var local = 'local variable';
                return function () {
            return local;
            };
        };
        var baz = bar();
        console.log(baz());
      }
    //local variable
    

    闭包的不足

    一旦有变量引用这个中间函数,这个中间函数就不会释放,同时也会是原始的作用域不会得到释放,作用域中产生的内存占用也不会得到释放。除非不再引用,才会逐步释放。

    相关文章

      网友评论

        本文标题:闭包

        本文链接:https://www.haomeiwen.com/subject/zmejpxtx.html