JavaScript < ES5、ES6、ES7、… >

JavaScript闭包

2019-03-23  本文已影响8人  nomooo

闭包
函数A中有一个函数B,函数B中可以访问函数A中的变量或者数据,此时形成闭包

举个🌰----函数模式的闭包

    function f1() {
      var num = 10;
      return function () {
        console.log(num);
      }
    }
    var ff=f1();
    ff();//10

再举个🌰----对象模式的闭包

    function f3() {
      return {
        age:100,
        getAge:function () {
          console.log(this.age);
        }
      }
    }

   var obj= f3();
    obj.getAge();//100

闭包的作用缓存数据;只要是想把数据保存起来,就把这个数据放在闭包中(就是在外层函数和里层函数的中间)
正因为闭包的出现缓存了数据,那么函数中的变量就没有得到及时的释放

    function f1() {
      var num = 10;//局部变量----函数使用后应该释放,但是闭包的情况,该变量的值没有释放,延长作用域了.
      return function () {
        return num++;
      }
    }
    var ff=f1();
    console.log(ff());//10
    console.log(ff());//11
    console.log(ff());//12
    console.log(ff());//13
上一篇 下一篇

猜你喜欢

热点阅读