• JavaScript&JQ 004_JS闭包



    1、什么是闭包
    --
    函数嵌套函数
    --
    内部函数可以引用外部函数的参数和变量
    --
    参数和变量不会被垃圾回收机制回收
     <script type="text/javascript">
        
         //1.1函数嵌套函数
         function Rabbit()
         {
           function shortHairGirl()
           {
             
           } 
         } 
         //1.2内部函数可以引用外部函数的参数和变量
         function Rabbit2()
         {
          var name="rabbit";//Rabbit2()执行完毕的时候,js垃圾回收器并没有对其回收
           //因为shortHairGirl()对其还有引用
          function shortHairGirl()
          {
            alert(name);
          } 
          return shortHairGirl;
         } 
         var loveShortHairGirl=Rabbit2();
         //loveShortHairGirl();
         //1.3参数和变量不会被垃圾回收机制回收 
         function GC()
         {
            var girl="我是短发美女";
         }
         GC();//当GC()执行完毕的时候,变量girl就会被js垃圾回收器,节省内存
        </script>

     2、闭包的好处

           --希望一个变量长期驻扎在内存当中,避免全局变量的污染

    //2.1没有使用闭包
         var girlAge=23;
         function  IncAge()
         {
           girlAge++;
           alert("短发美女的芳龄是:"+girlAge);
         }
         //IncAge();//24
         //IncAge();//25
         
          function  IncAge2()
         {
          var girlAge=22;
           girlAge++;
           alert("短发美女的芳龄是:"+girlAge);
         }
         //IncAge2();//23
         //IncAge2();//23
         
         
         function RabbitLoveGirl()
         {
             var age=22;
             return function(){
               age++;
               alert(age);
             }
         }
         var girlAge=new RabbitLoveGirl();
         //girlAge();
         //girlAge();
         
         //如果一个函数放在()中,那么就变成了函数表达式
         (
          function aaa(){
            alert(2);
          }
         )(); 
         (function(){
           alert("shit");
         })();
         
         var age=(function(){
          var a=10;
          return function(){
           a++;
           alert(a);
          }
         })();
         age();
         age();
        </script>

    3、 闭包需要注意的地方【IE下可能引发内存泄露】,就不举例了。

    4、望眼欲穿,不见一个短发女孩出现。于是乎,我来到了海边.....   

  • 相关阅读:
    STA分析(四) lib model
    STA分析(三) cmos模型
    STA分析(二) multi_cycle and false
    STA分析(一) setup and hold
    UVM环境(一)
    Perl中的正则表达式(五)
    RVDS编译器
    ARM的Trust Zone技术
    001-shell基础,创建,运行
    006-mac下finder操作
  • 原文地址:https://www.cnblogs.com/zjflove/p/3076392.html
Copyright © 2020-2023  润新知