`

闭包的概念

阅读更多

原文地址  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算法的实现方式。实践是理论学习的有力补充,结合实例的编程练习能够帮助我们更好地理解和运用这些抽象的数学概念。

    计算NFA中ε闭包

    #### 一、NFA与ε闭包概念介绍 **非确定有限自动机(NFA)**是一种理论计算模型,它扩展了确定有限自动机(DFA)的概念,允许在某些情况下从一个状态出发到达多个状态。在NFA中,存在一种特殊的转移类型称为ε-转移,...

    javascript,jquery闭包概念分析

    其实javascript里的闭包概念很简单,就是函数用到外部变量,不需要传参就可以获取。 举个例子: 代码如下: [removed] var sMessage = “Hello world”; function sayHello(){ alert(sMessage); } sayHello...

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

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

    js闭包详细讲解

    #### 一、闭包概念与特性 **闭包**是JavaScript语言的一个重要特性,它使得函数可以访问并操作其外部作用域内的变量,即使该函数在其外部作用域之外被调用。要理解闭包,首先需要了解JavaScript的作用域规则。 ###...

    Swift编程语言中函数与闭包的详细介绍及实战应用

    内容概要:本文详细介绍了Swift编程语言中的函数与闭包概念,包括函数的基础用法(声明与调用、参数与返回值)、函数类型与变量、内嵌函数与函数链、闭包的概念及其各种高级用法(尾随闭包、隐式返回闭包、捕获列表...

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

    本文主要讲解了基于JavaScript闭包原理的Web图片浏览控件的实现,包括JavaScript闭包概念、闭包应用场景、Web图片浏览控件的设计思路和实现方法。 1. JavaScript闭包概念 JavaScript闭包是一个拥有许多变量和绑定...

    c++求传递闭包

    #### 一、传递闭包概念 在图论中,传递闭包(Transitive Closure)是针对有向图的一种特殊运算,其目的是找出图中任意两个顶点间是否存在路径。简单来说,如果存在一条从顶点 \( i \) 到顶点 \( j \) 的路径,则在...

    JS匿名函数、闭包

    #### 三、闭包概念解析 **闭包**是JavaScript中一种非常强大的机制,它允许函数访问并操作其定义时所在的范围内的变量,即使在函数被调用时这个范围已经不存在了。 ##### 原理: - **作用域链**:当一个函数被...

    江西财经大学关系的传递闭包

    关系的传递闭包是图论和离散...总的来说,这个实验旨在加深对关系传递闭包概念的理解,掌握其在计算机中的实现方式,以及沃许算法的原理。通过C++编程实现,不仅锻炼了编程能力,也巩固了离散数学和算法的相关知识。

    闭包javascript.pdf

    从给定的文件信息来看,主要围绕JavaScript中的闭包概念进行深入探讨。闭包是计算机科学中一个重要的概念,特别是在函数式编程语言中,如JavaScript,它允许一个函数在定义时捕获并记住其周围的环境状态,即使在函数...

    闭包.playground.zip

    本教程通过`闭包.playground.zip`文件将带你深入理解Swift中的闭包概念。 闭包的基本语法: 闭包表达式是Swift中定义闭包的简洁方式,其格式如下: ```swift { (parameters) -> returnType in // closure body } `...

    javascript闭包

    #### 一、闭包概念与工作机制 **闭包**是JavaScript中最强大的特性之一,它使得函数能够记住并访问其定义时所在的作用域中的变量。要理解和运用闭包,首先需要理解作用域、作用域链以及垃圾回收机制。 ##### 1.1 ...

    Swift5.2 Block(闭包)

    下面我们将深入探讨Swift 5.2中的闭包概念、语法和应用。 首先,闭包的基本语法包括参数列表和返回类型。在Swift中,闭包表达式提供了一种简洁的语法,可以省略类型推断能够确定的部分。例如: ```swift let sum =...

    JavaScript基础篇(6)之函数表达式闭包

    #### 二、函数表达式闭包概念 闭包是JavaScript中的一个核心概念,它是指有权访问另一个函数作用域中变量的函数。闭包的产生是因为内部函数持有了外部函数的变量,即使外部函数已经执行完毕,内部函数仍然可以访问...

    编译原理2_例题-引论.pdf

    编译原理引论中的闭包概念是一个非常重要的概念,它可以用来描述语言的所有可能的字符串组合,描述自动机的行为,定义语言的语法结构等。理解闭包概念对于设计和实现编译器非常重要。 在编译原理中,还有许多其他...

    JS闭包可被利用的常见场景小结

    ### 闭包概念简述 闭包是函数以及声明该函数的词法环境的组合。当函数在其被定义的作用域之外的地方被调用时,它仍能访问定义时的词法作用域,这便是闭包的特性。简单来说,闭包可以理解为是函数内定义的函数,它...

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

    闭包是JavaScript中一个非常重要的概念,它允许一个函数访问并操作函数外部的变量。理解闭包对于编写高效、可维护的JavaScript代码至关重要。 首先,闭包的定义可以从多个角度来理解。从概念上讲,闭包是函数和声明...

Global site tag (gtag.js) - Google Analytics