`

闭包的概念

阅读更多

原文地址  http://www.cnblogs.com/rubylouvre/archive/2009/07/24/1530074.html

 

闭包的定义非常晦涩——闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。这些外部执行域的非持久型变量神奇地保留它们在闭包最初定义(或创建)时的值(深连结)。简单来说,闭包就是在另一个作用域中保存了一份它从上一级函数或作用域取得的变量(键值对),而这些键值对是不会随上一级函数的执行完成而销毁。周爱民说得更清楚,闭包就是“属性表”,闭包就是一个数据块,闭包就是一个存放着“Name=Value”的对照表。就这么简单。但是,必须强调,闭包是一个运行期概念。

在Javascript中闭包(Closure),有两个特点:

  • 作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
  • 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。

现在比较让人认同的闭包实现有如下三种

 

with(obj){
    //这里是对象闭包
    }
(function(){
    //函数闭包
    })()
try{
//...
} catch(e) {
//catch闭包 但IE里不行
}
分享到:
评论

相关推荐

    关系概念、传递闭包概念及warshall算法c++程序

    在初学离散数学关系概念、传递闭包概念及warshall算法时,总感觉理论缺乏实例,难以理解,本资源收集了一篇短文,讲清了概念,我结合实例编了c++程序,觉得清晰多了,供大家参考

    闭包概念原理

    闭包(closure)。闭包其实大家都已经谈烂了。尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭包内部究竟是如何工作的

    javascript中的闭包概念与用法实践分析

    本文实例讲述了javascript中的闭包概念与用法。分享给大家供大家参考,具体如下: 闭包的概念:闭包是指有权访问另一个函数作用域中的变量的函数 (引自《javascript高级程序设计第三版》178页)。闭包的优点是不会...

    javascript,jquery闭包概念分析

    偶尔听人说javascript闭包,让我联想起以前学编译原理和数字逻辑里讲的闭包,以前上课讲的闭包很难懂,而且含有递归的意思在里面,现在不想再查看里面的闭包概念。

    javascript中闭包概念与用法深入理解

    本文实例分析了javascript中闭包概念与用法。分享给大家供大家参考,具体如下: 1.问题的引出,什么时候会遇到闭包? 首先因为JS是没有块状作用域的,但是有函数作用域即函数作为了局部变量之间的界限,不同函数内的...

    javascript闭包概念简单解析(推荐)

    下面小编就为大家带来一篇javascript闭包概念简单解析(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    闭包的使用.pdf

    讲解Python的闭包概念,并且说明在python中如何实现 闭包,以及使用闭包有哪些方法和手段,最后介绍下python中应用装饰器的场 景。

    Java闭包 Java闭包

    在2013年发布的 JavaSE8 中包含一个叫做 Lambda Project 的计划,在 JSR-335 草案 中有描述。 JSR-335 将闭包引入了 Java 。闭包在现在的很多流行的语言中都存在,...而且将试着放一些样例程序来解释一些概念和语法。

    微信小程序闭包问题引发的JS闭包解决方案

    作者:虫哥写代码,来自原文地址 看到标题“闭包”很多人会觉得懵逼包括我在内,之前对闭包有所听闻但始终无法准确全面的了解。对于前端同学无论在面试还是在开发...升华闭包概念理解。废话少说直接步入正题。   还原

    Python中的闭包和装饰器

    闭包概念1.1 python的命名空间1.2 闭包的概念2. 闭包解析二、装饰器1、概念2.例 一. 闭包 1.闭包概念 1.1 python的命名空间 python命名空间就是作用域表现的原因,这里我简要说明一下。 引入命名空间的主要原因...

    征服Python全栈面试:掌握这20个问题,助你脱颖而出!.zip

    内容关键词:面试题、答案、列表与元组、异常处理、全局变量、局部变量、MVC、Git与GitHub区别、继承实现、生成器与迭代器、多线程实现、RESTful API定义、拷贝实现、装饰器链、事务管理、单元测试、闭包概念、...

    Python函数中的函数(闭包)用法实例

    跟js中的闭包概念其实差不多,举个Python中闭包的例子。 def make_adder(addend): def adder(augend): return augend + addend return adder p = make_adder(23) q = make_adder(44) print(p(100)) print(q(100)...

    编译原理总复习指导

    第2章:语法规则,语义规则,闭包概念,上下文无关文法,最左(右)推导,文法类型; 第3章:词法分析的任务、功能,预处理问题,状态转换图,正规式和正规集的递归定义,空字闭包,DFA、NFA转换与化简; 第4章:...

    轻松理解JavaScript闭包

    下面列举出常见的闭包实现方式,以例子讲解闭包概念 function f1(){  var n=999;  nAdd=function(){n+=1}  function f2(){  alert(n);  }  return f2;  }  var result=f1();  result(); // 999  ...

    JS匿名函数、闭包

    使用闭包可以在JavaScript中模仿块级作用域(JavaScript本身没有块级作用域的概念),要点如下: 创建并立即调用一个函数,这样既可以执行其中的代码,又不会在内存中留下对该函数的引用; 结果就是函数内部的所有...

    极小S-负传递闭包的一个求解方法

    主要研究了负传递的性质,利用余蕴涵的概念,给出了有限论域上模糊关系的极小S-负传递闭包的一个求解方法,进一步丰富了模糊关系传递性的对偶性质——负传递性的研究。

Global site tag (gtag.js) - Google Analytics