zoukankan      html  css  js  c++  java
  • JS中,什么是闭包?闭包有什么好处?

    相信网上对闭包有很多的解释,毕竟这个玩意儿是仁者见仁智者见智,对于我来说,总结了2个特性:

    1.函数嵌套函数,内部函数可以引用外部函数的参数和变量

    function  aaa() {
        var a = 5;
        function bbb() {
            alert(a)
        }
    
        return bbb
    }
    var c = aaa();
    c();

    2.参数和变量不会被垃圾回收机制所收回

    JS中的垃圾回收机制
    
      function test(){
            var a = 1;
            alert(a)
      }
      test(); // 执行完这个函数,函数里面的a就不存在了,

     

    下面来扯一下闭包的好处:

    1.希望变量长期驻扎在内存当中(一般函数执行完毕,变量和参数会被销毁)

    2.避免全局变量的污染

     function  aaa() {
           var a = 1;
           a++;
           alert(a)
     }
    
    aaa(); // 2
    aaa(); // 2
    aaa(); // 2
    上面的函数不管执行几次,弹出的都是2,如果我们想弹出2/3/4 这样的结果呢?就需要用到闭包
      function aaa() {
            var a = 1;
            return function(){
                a++;
                alert(a)
            }
        }
    
        var bbb = aaa();
        bbb(); // 2
        bbb(); // 3
        bbb(); // 4
    
        // 函数表达式的写法
        var aaa = (function () {
            var a = 1;
            return function () {
                a++;
                alert(a)
            }
        })()
    
        aaa() // 2
        aaa() // 3
        aaa() // 4
  • 相关阅读:
    codeforces-1144 (div3)
    codeforces-1142 (div1)
    codeforces-1131 (div2)
    codeforces-1132 (div2)
    [HAOI2006]均分数据
    Ellipsoid
    [JSOI2004]平衡点 / 吊打XXX
    CF208E Blood Cousins
    CF570D Tree Requests
    CF600E Lomsat gelral
  • 原文地址:https://www.cnblogs.com/0955xf/p/12634418.html
Copyright © 2011-2022 走看看