闭包1

在一个函数里面嵌套另一个函数

1    function func() {
2         var a=1, b=2;
3         function closure() {
4             return a + b;
5         }
6         return closure;
7     }
console.log(func());  返回那个函数
console.log(func()());  返回那个函数的执行结果
1 1、在外面操作闭包内部的变量
2 2、可以形成封闭空间,防止全局变量污染
3 3、可以延长闭包内部变量的生命周期
 1 <script type="text/html">
 2     function makeSub(x) {
 3         return function (y) {
 4             return x - y;
 5         }
 6     }
 7 
 8     var sub3 = makeSub(3);
 9     var sub7 = makeSub(7);
10 
11     console.log(sub3(2)); // 1
12     console.log(sub7(2)); // 5
13 
14     // 释放对闭包的引用
15     sub3 = null;
16     sub7 = null;
17 </script>

对应第二条

 

<script>
    var singleton = (function () {
        // 私有变量
        var intro = "喜欢IT, 就来撩课!";
        var work = function () {
            console.log('小撩!!!!!');
        };

        return {
            name: '小撩',
            getIntro: function () {
                return intro;
            },
            getWork: function () {
                return work;
            }
        }
    })();

    console.log(singleton.name); //可以访问到
    console.log(singleton.getIntro());//访问私有变量
    singleton.getWork()();//访问私有变量

</script>

 

posted @ 2019-07-22 21:33  疏影横斜水清浅  阅读(221)  评论(1编辑  收藏  举报