JS中,什么是闭包?闭包有什么好处?

Posted 淡入我心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于JS中,什么是闭包?闭包有什么好处?的主要内容,如果未能解决你的问题,请参考以下文章

JS---闭包

js 闭包(面试题)

js闭包理解

闭包有啥好处,它们通常在啥时候使用?

剖析js中的闭包,理解闭包到底是个什么,有怎样的作用

关于JS的随笔