`
japankn
  • 浏览: 216128 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

javascript闭包-2

阅读更多

这是从javascript王者归来里摘抄的例子,用来说明一下闭包!

第一个例子

function A(a){                  //普通函数
    return a;
}
function B(b){
    return function(){        //这里的函数是闭包,随B函数的调用而创建
        return b;
    }
}
var x = A(10);                  //普通调用
var y = B(20);                  //返回的是闭包函数,没有被调用
var z = B(30);                  //返回的是闭包函数,没有被调用
alert(x);                           //返回10,并且调用的堆栈被销毁
alert(y());                        //返回20,这里是真正调用闭包的地方,在调用B函数时,闭包函数没有随B函数的结束而

                                       //销毁
alert(z());                        //返回30,这里是调用的新创建的闭包。

 

 

 

第二个例子

function counter(a,b){
    return function(){               //这个闭包会动态修改a的值
        a = a+b;
        return a;
    }

    //return function(){            //这个闭包会动态修改b的值
    //    b = a+b;
    //    return b;
    //}

}
var c1 = counter(5,6);           //初始值传入5,6
for(var i =0;i<2;i++){           
    alert(c1());                        //这里循环两次打印值为(第一种情况)11、17,第一次是5+6,第二次由于闭包将a

                                             //的值改变为第一次的相加结果11,这是我们初始传入的b为6,那么就变成了11+6
}
alert(c1());                            //23,这里又一次调用,情况与上面相同

 

 

第三个例子

function ClassA(a){
    function _a(){                         //私有函数,外环境不能调用
        return a;
    }
    this.mes = function(){            //通过内部对象可以调用内部私有函数
        return "hello "+_a();
    }
}
var obj = new ClassA("god");    //传入字符串
alert(obj.mes());                        //通过产生的闭包调用函数
//下面两种方法都不能够访问到_a()函数

alert(ClassA._a());

alert(obj._a()); 

 

 

第四个例子

function test(){
    for(var i = 0;i<5;i++){
        (function(j){                                               //闭包函数,这里改为alert(j),效果一样
            setTimeout(function(){alert(j)},500);    //内部又有个闭包函数,嵌套
        })(i);                                                          //i为传入的形参,
   }

}
test();  //输出 0,1,2,3,4

分享到:
评论

相关推荐

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

    JavaScript 闭包研究及典型应用 JavaScript 闭包是一种强大的技术,能够在各种场景中发挥重要作用。本文将介绍 JavaScript 闭包的定义、使用场景和典型应用。 闭包函数的定义和使用场景 在 JavaScript 语言中,...

    JavaScript闭包

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

    第九课 闭包-021

    在前端开发中,闭包是一种重要的概念,它涉及到函数、作用域和内存管理。闭包允许函数访问并操作其外部作用域的变量,即使在外部函数执行完毕后,这些变量仍然可以被内部函数记住。这一特性使得闭包在数据封装、模块...

    第九课 闭包-011

    在前端开发中,闭包是一种非常重要的概念,它涉及到JavaScript中的函数、作用域以及内存管理。本节我们将深入探讨匿名函数和闭包,并了解它们在实际应用中的作用。 首先,我们来看匿名函数。匿名函数,正如其名,是...

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

    2. JavaScript闭包应用场景 JavaScript闭包的主要应用场景包括: (1) 读取函数内部的变量:通过闭包,可以读取函数内部的变量,从而实现函数的重用。 (2) 在内存中维持一个变量:闭包可以维持函数内部变量的生命...

    javascript 闭包

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

    Javascript 闭包完整解释

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

    javascript闭包详解中文word版

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

    javascript-闭包详解.doc

    javascript-闭包详解.doc

    javascript闭包的理解

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

    JavaScript闭包函数

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

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

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

    javascript 闭包实例下载

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

    基于javascript 闭包基础分享

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

    javaScript闭包技术资料

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

    javascript闭包详解

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

    javascript闭包高级教程

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

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

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

Global site tag (gtag.js) - Google Analytics