zoukankan      html  css  js  c++  java
  • 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() {
    
        }
    复制代码

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

  • 相关阅读:
    我的WCF之旅(1):创建一个简单的WCF程序
    c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别
    Linux 系统时间设置
    Redis入门
    线程安全的单例模式
    redis-Sentinel配置
    openpose
    Qt5.11参考文档
    opencv3.3
    opencv3.4 win10 visual studio2017 opencv_contrib 编译
  • 原文地址:https://www.cnblogs.com/dream111/p/13466449.html
Copyright © 2011-2022 走看看