闭包

闭包:

  函数在调用的时候会形成一个私有的作用域,对内部的变量起到保护的作用,这就是闭包

  变量的销毁:

    1.人为销毁  var a=12;  a=null;

    2.自然销毁  函数调用完成后,浏览器会自动销毁函数内的变量;

      案例:

        function fn(){

          var  a=5

          a++

          console.log(a)

        }

        fn()

        fn()

        fn()

  3.闭包的优势:

    1.保护变量;

    2.缓存数据 (这是他的优势,也是他的劣势,函数调用完后会被销毁,我们不能使用这个变量,闭包可以不让他被销毁,但也会影响浏览器的性能)

  4.闭包的种类;

    1.函数式闭包;

    案例:

      function fn(){

        var a=5;

        function ff(){

          a++

          console.log(a)

        }

        ff()

      }

      fn()

      fn()

      fn()

    2.对象式闭包

      function fn(){

        a=45

        var obj={

          num:a

        }

        console.log(obj.num)

  5.函数返回值的问题:

    每个函数都有一个返回值,如人为返回,return的什么就是什么,如果没有就是undefined,

  6.闭包怎样缓存数据;

    function fn(){

      var a=23

      return function(){

        a++

        console.log(a)

      }

    }

    fn()

    fn()

    fn()

posted @ 2018-12-17 20:07  web前端探索者  阅读(265)  评论(0编辑  收藏  举报