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 相关文章推荐
jquery插件 cluetip 关键词注释
Jan 12 Javascript
用jQuery打造TabPanel效果代码
May 22 Javascript
js修改table中Td的值(定义td的双击事件)
Jan 10 Javascript
JS实现的颜色实时渐变效果完整实例
Mar 25 Javascript
js微信扫描二维码登录网站技术原理
Dec 01 Javascript
浅谈js数组和splice的用法
Dec 04 Javascript
bootstrap组件之按钮式下拉菜单小结
Jan 19 Javascript
jQuery实现搜索页面关键字的功能
Feb 16 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
Angular2.0实现modal对话框的方法示例
Feb 18 Javascript
vue学习笔记之作用域插槽实例分析
Feb 01 Javascript
解析原生JS getComputedStyle
May 25 Javascript
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
超级实用的7个PHP代码片段分享
2012/01/05 PHP
codeigniter中测试通过的分页类示例
2014/04/17 PHP
PHP API接口必备之输出json格式数据示例代码
2017/06/27 PHP
怎么清空javascript数组
2013/05/11 Javascript
jquery foreach使用示例
2013/09/12 Javascript
jquery 快速回到页首的方法
2013/12/05 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
vue.js的安装方法
2017/05/12 Javascript
vue router2.0二级路由的简单使用
2017/07/05 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
如何构建一个Vue插件并生成npm包
2020/10/26 Javascript
ant-design-vue中tree增删改的操作方法
2020/11/03 Javascript
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
python实现弹窗祝福效果
2019/04/07 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
详解python的变量缓存机制
2021/01/24 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
节能环保标语
2014/06/12 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
2015年高校就业工作总结
2015/05/04 职场文书
创业计划书之废品回收
2019/09/26 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript
Python绘制地图神器folium的新人入门指南
2021/05/23 Python
使用CSS设置滚动条样式
2022/01/18 HTML / CSS
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记