大闭包

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    function a(){
        var num = 10;
        function b(){
            console.log(num++);
        }
        return b;  // 返回的是b
    }
    var c = a();  // c 里面放的是 b函数
    c(); //10
    c(); //11
    //a 函数的一个 内部变量  被 a 函数外的c函数所使用,是通过b函数来实现的,所以b函数就是创建了一个闭包

function aa(){
        var re = 20;
        return function(){
            console.log(re);
        }
    }
    var cc = aa();
    cc();
    function outerFun()
    {
        var a=0;
        function innerFun()
        {
            a++;
            alert(a);
        }
        return innerFun;  //注意这里
    }

var obj=outerFun();
    obj();  obj();
    var obj2=outerFun();
    obj2();  obj2();

</script>
</body>
</html>

时间: 2024-10-11 08:15:41

大闭包的相关文章

CSDN开源夏令营 百度数据可视化实践 ECharts(6) 期中总结

期中总结 (1)首先感谢林峰老师的辛勤指导!! 通过半个多月的培训,林峰老师讲解了ECharts总体框架和其中各个部分:图类.组件.接口.基础库的具有应用方法和应该把握的细节,并通过实际的例子熟悉和掌握各个控件.只有打牢基础才能正正的为下步的工作做好准备,熟练的属性代码的编程技巧,才能做出更好的专题. (2)第一次任务重点总结: 要求:了解ECharts特性中列举的每一项特性,并能找到实例中的例子,并且在实例中操作. 重点问题: 1)ECharts一种支持多少种图表?有多少个组件?列举出中英文名

开始学习Scheme

开始学习Scheme 函数式编程(Functional Programming)是在MIT研究人工智能(Artificial Intelligence)时发明的,其编程语言为Lisp.确切地说,Lisp是一个语言家族,包括无数的方言如:Scheme.Common Lisp.Haskell--等等. 最后一次学习Scheme已经是去年7月份的事情了.本来只是出于兴趣,以及拓宽自己思路的目的来学习.未曾想,由于工作需要,Scheme编程已经成为一个必备的技能了.其实这里面也由办公室政治的原因,因为我

javascript深入理解js闭包(个人理解,大神勿喷)

一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量. Js代码 function f1(){ var n=999; } alert(n); // error 这里有一个地方需要注意,函数

[原]异步编程的两种模型,闭包回调,和Lua的coroutine,到底哪一种消耗更大

今天和人讨论了一下CPS变形为闭包回调(典型为C#和JS),以及Lua这种具有真正堆栈,可以yield和resume的coroutine,两种以同步的形式写异步处理逻辑的解决方案的优缺点.之后突然想到,这两种做法,到底拿一种会更消耗.我自己的判断是,在一次调用只有一两个异步调用中断时(即有2次回调,或者2次yield),闭包回调的方式性能更好,因为coroutine的方式需要创建一个具有完全堆栈的协程,相对来说还是太重度了.但是如果一次调用中的异步调用非常多,那么coroutine的方式性能更好

闭包的理解(可能有误,大神看到如果有问题请纠正)

对于闭包的理解,主要有两个作用 1.外部方法应用内部方法的变量,2.缓存数据 function a() { var i = 0; function b() { alert(++i); } return b; } var c = a(); c();//1 c();//2 其中的c是一个window全局方法,它能调用方法a里面的b方法,注意a是返回了一个内部函数b,如果不这样,那c就不能调用b了: a中有一个变量i,为什么第一次调用c它是1,第二次时2,因为c是一个全局对象,一直保存在内存中 看以下

JavaScript的3大组成部分&amp;&amp;ECMAScript函数&amp;&amp;闭包

1.JavaScript实现是由ECMAScript.DOM和BOM组成.a.ECMAScript仅仅是一个描述,定义了脚本语言的所有属性.方法和对象.b.DOM[文档对象模型]是HTML和XML的应用程序接口,DOM将把整个页面规划成由节点层级构成的文档.c.BOM[浏览器对象模型]可以对浏览器窗口进行访问和操作. JS对象有:Array Boolean Date Math Number String RegExp Functions EventsBrowser对象有:Window Navig

关于js闭包之小问题大错误

闭包是 JavaScript 开发的一个关键方面:匿名函数可以访问父级作用域的变量. 如果闭包的作用域中保存着一个 HTML 元素,则该元素无法被销毁.(下面代码来自高程) 刚看到一个关于闭包自己没注意到的地方, function assgin() { var ele = document.getElementById('someEle'); ele.onclick = function(){ alert(ele.id); } } 以上代码创建了一个作为 ele 元素事件处理程序的闭包,而这个闭

学习Javascript闭包(Closure)

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于Javascript初学者应该是很有用的. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外

js的闭包概念

一.变量的作用域要懂得闭包,起首必须懂得Javascript特别的变量作用域.变量的作用域无非就是两种:全局变量和局部变量.Javascript说话的特别之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); // 999另一方面,在函数外部天然无法读取函数内的局部变量.Js代码 function f1(){ var n=999; } alert(n); // error这里有一个处所须要重视,函数内部声明变量