zoukankan      html  css  js  c++  java
  • 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、望眼欲穿,不见一个短发女孩出现。于是乎,我来到了海边.....   

  • 相关阅读:
    Web API总结
    @Html.Raw() 方法输出带有html标签的字符串
    jQuery
    图与树基础-完全图的判定
    图和树基础-蒜头君旅行
    PAT乙级1008
    PAT乙级1007
    PAT乙级1005
    PAT乙级1001
    前端工程化-webpack简介(一)
  • 原文地址:https://www.cnblogs.com/zjflove/p/3076392.html
Copyright © 2011-2022 走看看