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

猜你喜欢

转载自www.cnblogs.com/0955xf/p/12634418.html