javascript学习之闭包分析


Posted in Javascript onDecember 02, 2010

在ECMAScript中,在函数声明处向函数外部看到的声明的所有变量,在函数内部都能访问到它们的最终值

闭包函数只能访问变量的最终值!!!

eg: 

function fnTest(arr) {
  

for (var i=0;i < arr.length;i++) {

arr[i]=function () { alert(i+" | "+arr[i]); };
  

}
 }
 var arr = [0,1,2,3];
 fnTest(arr);
 for (var i=0;i < arr.length;i++) {
  arr[i](); 

//始终输出4还有一个undefined因为函数退出后,i值为4,所以访问到的值只有4

//结果会连续弹出4个"4|undefined”
 }

 不但在闭包中可以访问闭包外的变量值,而且还可以设置它的值

eg:

 function fnTest() {
  

var a="June";
  

return {
   

set:function (param) {a = param},
   

get:function () {return a}
  

};
 }
 var obj = fnTest();
 alert(obj.get());//弹出June

 obj.set(586);
 alert(obj.get());//弹出586 

Javascript 相关文章推荐
js实现连续英文字符自动换行兼容ie6 ie7和firefox
Sep 06 Javascript
js实现日期级联效果
Jan 23 Javascript
jQuery插件分享之分页插件jqPagination
Jun 06 Javascript
跟我学习javascript的基本类型和引用类型
Nov 16 Javascript
jQuery如何使用自动触发事件trigger
Nov 29 Javascript
Angular2 (RC4) 路由与导航详解
Sep 21 Javascript
Angular2学习笔记——详解路由器模型(Router)
Dec 02 Javascript
Express之get,pos请求参数的获取
May 02 Javascript
JavaScript闭包和回调详解
Aug 09 Javascript
详解ES6中的代理模式——Proxy
Jan 08 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 Javascript
jQuery实现全选、反选和不选功能的方法详解
Dec 04 jQuery
JavaScript OOP面向对象介绍
Dec 02 #Javascript
JavaScript 字符串处理函数使用小结
Dec 02 #Javascript
改写一个简单的菜单 弹性大小
Dec 02 #Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
Dec 02 #Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
Dec 02 #Javascript
JQuery 弹出框定位实现方法
Dec 02 #Javascript
Jquery replace 字符替换实现代码
Dec 02 #Javascript
You might like
PHP读取目录下所有文件的代码
2008/01/07 PHP
Zend的AutoLoad机制介绍
2012/09/27 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
PHP实现简单登录界面
2019/10/23 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
2016/12/16 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
node中的cookie的具体使用
2018/09/13 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
基于PHP pthreads实现多线程代码实例
2020/06/24 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
Python数据类型详解(一)字符串
2016/05/08 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
Python 打印中文字符的三种方法
2018/08/14 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
Linux文件操作命令都有哪些
2015/02/27 面试题
公司成本主管岗位责任制
2014/02/21 职场文书
排查整治工作方案
2014/06/09 职场文书
2014年平安夜寄语
2014/12/08 职场文书
护理实习生带教计划
2015/01/16 职场文书
谢师宴邀请函
2015/02/02 职场文书
清明节网上祭英烈寄语2015
2015/03/04 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
MySQL Server 层四个日志
2022/03/31 MySQL