Web 前端开发

闭包

2017-11-26  本文已影响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

闭包的不足

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

上一篇下一篇

猜你喜欢

热点阅读