5.写一个返回闭包的函数

1.闭包函数是指有权访问另一个函数作用域中的变量的函数
2.创建闭包函数最常见的方式是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量
3.闭包的特点:1函数嵌套函数,
2 函数内部可以引用外部的参数和变量
3
参数和变量不会被垃圾回收机制回收
4.闭包的优点:1 希望一个变量长期驻扎在内存中    *  
 2
避免全局变量的污染 *
       3
私有变量存在

5.闭包的实现 1:函数嵌套函数    *  
2
外层函数返回内层函数 *
3
外面有一全局变量接受外层函数

复制代码
function fun1() {
        var sum=0;
        function fun2() {
            sum++;
            return sum
        }
        return fun2
    }
    var s=fun1();
    console.log(s());
复制代码

 

复制代码
//  自执行函数  的闭包
    //
    var fun3=function () {
       var a=3;
       return{
           b:7,
           sum:function () {
               return this.b+a;
           }
       }
    }();
    console.log(fun3.sum());
复制代码
复制代码
/*
        *  把函数名当参数调用
        *  回调函数
        *
        * */
    function b() {
        console.log("b");
    }
    function c() {
        console.log("c");
    }
    function d(fun) {
        fun();
    }
    d(b);
    d(c);
复制代码
复制代码
    // 循环
    var num=0;
    function a1(fun) {
        fun(a1);
    }
    function a2(fun) {
        num++;
        console.log(num);
        if(num>10) return;
        fun(a2);
    }
    a1(a2);
复制代码
复制代码
// 事件函数  也是 回调函数
    this.addEventListener("click",clickHandler);
    function clickHandler(e) {

    }
    setInterval(animation,16);
    function animation() {

    }
复制代码

 

 返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量!

posted @ 2020-08-09 21:23  大牛半路出家  阅读(512)  评论(0编辑  收藏  举报