javascript闭包
来源:互联网 发布:python多进程 编辑:程序博客网 时间:2024/06/17 17:53
函数实例非一般对象实例
函数只是一段静态的代码、脚本文本,因此它是一个代码书写时,以及编译期的、静态的概念;
而闭包则是函数的代码在运行过程中的一个动态环境,是一个运行期的 、动态的概念。
由于引擎对每个函数建立其独立的上下文环境,因此当函数被再次执行或进入函数体内的代码时,就将会得到闭包内的全部信息。
闭包具有两个特点:
第一是闭包作为与函数成对的数据,在函数执行过程中处于激活(即可访问)状态;
第二是闭包在函数运行结束后,保持运行过程的最终数据状态。
因此函数的闭包总的来说决定了两件事:
闭包所对应的函数代码如何访问数据,以及闭包内的数据何时销毁。
对于前者来说,涉及作用域(可见性)的问题;
对于后者来说,涉及数据引用的识别。
闭包包括的是函数运行实例的引用、环境(environment,用来查找全局变量的表)、
以及一个由所有upvalue引用组成的数组,每个闭包可以保有自己的upvalue值。
闭包对应于运行期的函数实例的,而不是对应函数(代码块)的。
由于闭包对应于函数实例,那么我们只需要分析哪些情况下产生实例,就可以清楚地知道运行的闭包环境。
不同函数实例,访问不同闭包的upvalue
C++中一个函数调用结束后,除了静态变量,局部变量没有意义了。
而js中,一个函数也是对象,函数调用结束后在某些情况下其局部变量仍然有效。
通过对象实例的访问函数this.getProp,访问局部变量 var p。
在函数中将内部函数作为返回值。内部函数可以访问外部函数的变量。
局部变量其实是“调用对象(call object)”的属性
- 【JavaScript】Javascript闭包
- javascript的闭包javascript
- Javascript闭包演示javascript
- [ javascript ] javascript闭包测试!
- 【javascript】javascript中的闭包
- 【javascript】学习Javascript闭包
- 理解 JavaScript 闭包
- javascript 闭包
- javascript闭包
- Javascript闭包
- JavaScript中的"闭包"
- JavaScript 闭包
- javascript中的闭包
- 理解 JavaScript 闭包
- Javascript Closures[闭包]
- javascript闭包
- Javascript 闭包详解
- Javascript闭包技术
- 约瑟夫问题o(n)算法
- 海量数据处理之分而治之/hash映射 + hash统计 + 堆/快速/归并排序
- Android下实现电话号码归属地的查询
- 【精华】瞬间之美-web界面设计如何让用户心动
- SystemParametersInfo (SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- javascript闭包
- linux之用户管理
- android service 学习(下)
- main函数研究
- 海量数据处理之双层桶划分
- 《windows核心编程》学习笔记——内核对象
- ajax常用
- android 触摸屏滑动事件,对应的最小底层事件集
- GB2312简体中文编码表