且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

关于js闭包的简易理解

更新时间:2022-08-22 08:46:58

 

    function fn(){

            var i = 1;

            return function(n){

                  console.log(n+(i++))

            }

      }

      var f=fn();

      window.onload=function(){

        f(10);

        f(20);

        fn()(10);

        fn()(20);

    }

    控制台输出结果:11,22,11,21;

    function fn(){

            var i = 1;

            return function(n){

                  console.log(n+(i++))

            }

      }

      window.onload=function(){

        var f=fn();

        f(10);

        f = null;

        var f=fn();

        f(20);

        f = null;

        fn()(10);

        fn()(20);

    }

    控制台输出结果:11,21,11,21;

    总结:js变量初始化方法为方法返回的值时,该值会一直存在于作用域中,如果不进行闭包处理,该对象就不会被回收,所以这种情况下,对象使用完一定要进行闭包处理,防止对象一直存在于作用域影响性能以及下次调用时返回的值。