`
kobe学java
  • 浏览: 258474 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

如何使用javascript闭包

 
阅读更多

如何使用javascript闭包
2011-12-15 11:47

闭包的概念:官方的解释是,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 

变量的作用域:全局变量和局部变量

全局变量:函数内部可以直接读取全局变量

            var n=999;
            function f1(){

              alert(n);

           }

            f1(); //999

局部变量:函数外部自然无法读取函数内的局部变量 
    function f1()
    { var n=999;
    }
  alert(n); // error
注意:申明内部变量的时候,一定要写var,否则,它就是一个全局变量 

如何从外部读取局部变量?
   只有在函数的内部再定义一个函数:
function function A()
{
    var n=999;
    function B()
  {
      alert(n); // 999  

 }
}

既然B可以读取A中的局部变量,那么只要把B作为返回值,我们不就可以在A外部读取它的内部变量了吗!
     function A()
     {
    var n=999;
    function B()
     {     

     alert(n);   

   }
    return B;
  }
  var result=A();
  result(); // 999 
此时,B函数就是一个闭包.

闭包的简单概念:
闭包就是能够读取其他函数内部变量的函数。 
             函数内部的函数闭包的两个最大的作用
读取函数内部的变量 
变量的值始终保持在内存中 
function A()
{
    var n=999;
    nAdd=function(){n+=1}
    function B()
           {    

             alert(n); 

         }
    return B;
  }
  var result=A();
  result(); // 999
  nAdd();
  result(); // 1000
注意:函数A中的局部变量n一直保存在内存中,并没有在A调用后被GC回收 .

 闭包的缺陷
由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,可能导致内存泄露 
  解决方法是,在退出函数之前,将不使用的局部变量全部删除。
 总结:
JavaScript中的闭包函数,是不接受任何形参的,它的值,从执行环境中来
闭包中的变量是存在内存中的,并不会被GC回收
闭包中的变量对内存的消耗很大,乱用会导致内存泄漏的可能

 

 

分享到:
评论

相关推荐

    JavaScript闭包研究及典型应用.pdf

    本文将介绍 JavaScript 闭包的定义、使用场景和典型应用。 闭包函数的定义和使用场景 在 JavaScript 语言中,闭包函数是指在函数顶层可定义函数,即函数可以嵌套的。简单地说,闭包也就是内层函数可以引用存在于...

    基于JavaScript闭包的Web图片浏览控件的实现.pdf

    该控件使用JavaScript闭包原理,编写一个通用的Web图片浏览类,使用CSS控制显示外观,在网页中调用ShowPhotoLib类构造一个图片浏览器的对象,对图片进行控制显示。 4. 实现方法 实现ShowPhotoLib类,需要使用...

    JavaScript闭包

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

    javascript闭包详解中文word版

    资源名称:javascript闭包详解 中文word版   内容简介: Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C 的程序员来说是一个新的...

    javascript 闭包

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。

    layer.rar 使用js 闭包封装的原生提示模态框

    总结来说,“layer.rar”提供的是一种使用JavaScript闭包封装的跨平台提示模态框解决方案,它结合了HTML和CSS的威力,实现了响应式设计,可以在各种设备上提供一致的用户体验。这个工具的使用和实现涉及到了...

    Javascript 闭包完整解释

    ### JavaScript闭包完整解释 #### 一、闭包的基本概念 **闭包**是一个非常重要的JavaScript概念,它指的是一个函数能够记住并访问其外部作用域中的变量的能力,即使该函数在其外部作用域之外被调用也是如此。具体...

    高效使用JavaScript闭包

    使用闭包时,您在一个封闭范围内定义的数据源可供该范围内创建的函数访问,甚至在已经从逻辑上退出这个封闭范围时也是如此。在函数是一等(first-class)变量的语言中(比如JavaScript),此行为非常重要,因为函数的...

    javascript闭包的理解

    标题《JavaScript闭包的理解》涉及的知识点主要围绕JavaScript编程中的一个重要概念——闭包。闭包是一个高级且复杂的话题,它是JavaScript语言的核心特性之一,同时也是一大难点。要想熟练运用JavaScript,掌握闭包...

    JavaScript闭包函数

    闭包是ECMAScript (JavaScript)最强大的特性之一,但用好闭包的前提是必须理解闭包。闭包的创建相对容易,人们甚至会在不经意间创建闭包,但这些无意创建的闭包却存在潜在的危害,尤其是在比较常见的浏览器环境下...

    javascript闭包的高级使用方法实例

    JavaScript 闭包是一种强大的特性,它允许函数访问和操作其外部作用域中的变量,即使在外部函数执行...熟练掌握闭包的使用能够提升代码的可维护性和复用性,同时也能够帮助我们编写更加灵活和安全的 JavaScript 代码。

    基于javascript 闭包基础分享

    在JavaScript编程中,闭包是一个核心概念,它允许函数记住并访问所在词法作用域,即使当函数在其词法作用域之外执行时。闭包的特性使得它在JavaScript中既神秘又强大。 首先,我们从闭包的定义谈起。在JavaScript中...

    JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解

    在深入讨论JavaScript闭包之前,首先需要了解JavaScript的变量作用域。在JavaScript中,变量的作用域分为两种:全局变量和局部变量。全局变量是在函数外部定义的变量,可以在JavaScript程序的任何地方被访问。局部...

    javascript 闭包实例下载

    JavaScript 闭包是一种高级编程概念,它在JavaScript中扮演着至关重要的角色,特别是在函数式编程和模块化设计中。闭包本质上是函数和其能够访问...通过学习这些实例,你将能够更好地掌握JavaScript闭包这一核心概念。

    javascript闭包详解

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

    javascript闭包高级教程

    ### JavaScript闭包高级教程 #### 简介 在JavaScript编程中,“闭包”是一个非常重要的概念,尤其对于希望深入理解和高效使用JavaScript的开发者来说。简单地说,闭包是一种能够记住并访问其创建时周围环境的函数...

    【JavaScript源代码】详解JavaScript闭包问题.docx

    详解JavaScript闭包问题  闭包是纯函数式编程语言的传统特性之一。通过将闭包视为核心语言构件的组成部分,JavaScript语言展示了其与函数式编程语言的紧密联系。由于能够简化复杂的操作,闭包在主流JavaScript库...

    javaScript闭包技术资料

    ### JavaScript闭包技术详解 #### 一、闭包的基本概念 **闭包**是JavaScript中一个重要的概念,它涉及到函数的执行环境、作用域链等关键要素。简单来说,闭包是一个函数及其相关的引用环境的组合。具体而言,当一...

Global site tag (gtag.js) - Google Analytics