码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2020-04-04 22:44:16      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:cti   函数表达式   ++   变量   表达式   class   引用   全局   turn   

相信网上对闭包有很多的解释,毕竟这个玩意儿是仁者见仁智者见智,对于我来说,总结了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中,什么是闭包?闭包有什么好处?

标签:cti   函数表达式   ++   变量   表达式   class   引用   全局   turn   

原文地址:https://www.cnblogs.com/0955xf/p/12634418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!