zoukankan      html  css  js  c++  java
  • 闭包

    闭包

    什么是闭包???

    • 官方解释:闭包是指有权访问另一个函数作用域中的变量的函数
    • 个人理解:
      1.函数A返回函数B,函数B中操作函数A中的变量,执行函数A将返回的函数B赋值给全局变量。
      2.因为函数B使用了函数A中的变量,函数A执行完后,不会销毁,实现B函数的多次使用
      3.函数A的变量外部不能调用,所以实现了变量的私有

    闭包的特点

    • 函数嵌套函数
    • 函数内部可以引用外部的参数和变量
    • 函数外不能访问函数内的参数和变量
    • 参数和变量不会被垃圾回收机制回收

    闭包的目的

    • 希望一个变量长期驻扎在内存中
    • 避免全局变量的污染
    • 私有成员的存在

    缺点

    • 由于函数不自动销毁,会造成内存泄漏
    function fn1(){
        var a=1;
        // 因为返回的函数被存储在全局变量中,
        // 并且这个返回的函数使用这个a的局部变量,因此a被保存在堆中
        return function(){
            a++;
            console.log(a);
        }
    }
    
    var f=fn1();
    f()    // 2
    f();   // 3
    

    闭包封装工具包

    var Utils=(function(){
        var num=0;
           return {
               a:function(){
                   num++;
                   console.log(num);
               },
               b:function(){
    
               }
           }
       })();
       
    
       Utils.a();
       Utils.a();
       Utils.a();
    
  • 相关阅读:
    操作符重载
    虚继承
    虚函数(2)
    基类与子类的成员函数的关系
    虚函数
    虚函数的简单应用
    齐国的粮食战
    纯虚函数
    类的继承(2)
    输出自定义日期格式
  • 原文地址:https://www.cnblogs.com/94-Lucky/p/13498354.html
Copyright © 2011-2022 走看看