`
yejian235
  • 浏览: 22786 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JavaScript 闭包

    博客分类:
  • js
阅读更多
JavaScript很多书籍都讲的唧唧歪歪一大堆,不知道讲些什么

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下可能引发内存泄露】,就不举例了。
转载自http://www.cnblogs.com/zjflove/archive/2013/05/13/3076392.html
分享到:
评论

相关推荐

    JavaScript闭包

    Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态...本文将以例子入手来介绍Javascript闭包的语言特性,并结合一点 ECMAScript语言规范来使读者可以更深入的理解闭包。

    JavaScript闭包详解

    本文详细介绍了javascript闭包,十分的详尽,推荐给有需要的小伙伴参考下。

    javascript 闭包详解

    主要详细介绍了javascript 闭包的相关资料,十分详尽,需要的朋友可以参考下

    javascript 闭包

    闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分,本文将用通俗的语言带您深入理解Javascript闭包的概念。

    理解javascript闭包

    主要帮助大家理解javascript闭包概念优缺点及应用,帮助大家全面的学习javascript闭包,需要的朋友可以参考下

    理解Javascript闭包

    闭包是ECMAScript一个很重要的特征,但是却很难用合适的定义来描述它。虽然闭包很难清晰地描述,但是,却很容易创建,或者说,不小心创建。然而,闭包的存在其实是有一定的潜在问题的。为了避免“不小心”地创建闭包...

    javascript 闭包疑问

    今天在编码时,遇到一个问题,特记录下。希望对朋友有所帮助。

    JavaScript闭包函数访问外部变量的方法

    主要介绍了JavaScript闭包函数访问外部变量的方法,本文使用匿名函数来实现在闭包中访问外部变量,需要的朋友可以参考下

    javascript闭包入门示例

    主要介绍了多个javascript闭包入门示例,理解了这几个例子,对于闭包,应该可以算是入门了,需要的朋友可以参考下

    继续学习javascript闭包

    主要还是继续学习javascript闭包,理解JavaScript的闭包是迈向高级JS程序员的必经之路,需要的朋友可以参考下

    轻松理解JavaScript闭包

    闭包机制是JavaScript的重点和难点,本文希望能帮助大家轻松的学习闭包。下面跟着小编一起来看下吧

    JavaScript闭包实例讲解

    众所周知,JavaScript没有块级作用域,只有函数作用域。那就意味着定义在函数中的参数和变量在函数外部是不可见的,而在一个函数内部任何位置定义的变量,在该函数内部任何地方都可见

    JavaScript闭包 懂不懂由你反正我是懂了

    如果你不能向一个六岁的孩子解释清楚,那么其实你自己根本就没弄懂。好吧,我试着向一个27岁的朋友就是JS闭包(JavaScript closure)却彻底失败了

    javascript闭包详解

    javascript闭包详解 javascript闭包详解 javascript闭包详解

    谈一谈javascript闭包

    主要介绍了javascript闭包,闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现,感兴趣的小伙伴们可以参考一下

    Javascript闭包用法实例分析

    主要介绍了Javascript闭包的概念及用法,以实例形式深入浅出的分析了闭包的功能及使用时的注意事项,非常具有实用价值,需要的朋友可以参考下

    轻松学习Javascript闭包函数

    主要帮助大家轻松学习掌握Javascript闭包函数,从闭包的含义出发,由浅入深学习Javascript闭包函数,感兴趣的小伙伴们可以参考一下

    高效使用JavaScript闭包

    在函数是一等(first-class)变量的语言中(比如JavaScript),此行为非常重要,因为函数的生命周期决定了函数可以看到的数据元素的生命周期。在此环境中,很容易由于疏忽而在内存中保留比期望的多得多的数据,这样做...

Global site tag (gtag.js) - Google Analytics