闭包的应用场景
来源:互联网 发布:pp助手mac版工具箱 编辑:程序博客网 时间:2024/06/01 07:51
在ECMAScript中,闭包中的返回的语句会将控制流返回给上下文(调用者)
闭包的作用
1.保护函数内的变量安全
2.在内存中继续一个变量
例子:
function fun1(){
var i = 0;
function fun2(){
alert(++i);
}
return fun2;
}
var c = fun1();
c();
闭包产生的原因:
1.fun2在fun1内嵌套
2.fun2作为fun1的返回值被fun1返回
1.当定义函数fun1的时候,js解析器会将函数fun1的作用域设置为定义fun1的fun1所在的环境,如果fun1是一个全局函数,则scope chain只有windows对象。
2.当函数fun1执行的时候,fun1会进入相应的执行环境(exeution context)
3.在创建执行环境的过程中,首先会从fun1添加scope属性,即fun1的作用域 fun1.scope=a的作用域(scope Chain)
4.执行环境会创建一个活动对象(call Object),活动对象也是一个拥有属性的对象,但是他不具有原型而且不能通过javascript代码直接访问。创建完活动对象后,把活动对象添加到fun1的作用域的最顶端,此时fun1的作用域包含fun1的活动对象和window对象。
5.在活动对象上添加一个arguments属性,他保存访问fun1的时所传递的参数。
6.最后把函数fun1所有的参数和内部的函数fun2的引用也添加到fun1的活动对象上,在这一步需要完成fun2的定义,所有函数fun2的作用域也添加到fun1的的定义环境即fun1的作用域
- 闭包的应用场景
- 闭包的应用场景
- 闭包应用场景
- 闭包的应用场景一
- 闭包的应用场景二
- 闭包的应用场景三
- Javascript closure 闭包应用的两个场景
- javascript之闭包理解以及应用场景
- JavaScript 的闭包用于什么场景
- 闭包的应用
- 闭包的应用
- 闭包的应用
- 闭包的应用
- Paxos的应用场景
- Bloomfilter 的应用场景
- 信号量的应用场景
- memcached的应用场景
- IntentService的应用场景
- 提高编码速度的一些myeclipse快捷键
- oobe crash 分析
- Java开发中的23种设计模式详解(转)
- Javascript函数既可以实例化成对象也可以是可用的函数
- 生成照片宽高设置4:3
- 闭包的应用场景
- 常用排序算法
- POJ 1017 Packets(水~)
- Sudoku Solver填数
- 冒泡排序 回顾
- DB2中字符、数字和日期类型之间的转换
- javaScript里的setTimeout()函数
- Maven仓库—Nexus环境搭建及简单介绍
- Spring AOP 动态代理