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 相关文章推荐
监控 url fragment变化的js代码
Apr 19 Javascript
浅析jquery的作用与优势
Dec 02 Javascript
javascript学习笔记(八)正则表达式
Oct 08 Javascript
javascript实现自动输出文本(打字特效)
Aug 27 Javascript
jquery仿QQ登录账号选择下拉框效果
Mar 22 Javascript
收集前端面试题之url、href、src
Mar 22 Javascript
Koa2微信公众号开发之消息管理
May 16 Javascript
vuejs 制作背景淡入淡出切换动画的实例
Sep 01 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
Oct 17 Javascript
JS实现json数组排序操作实例分析
Oct 28 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
利用node.js开发cli的完整步骤
Dec 29 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
PHP 批量删除 sql语句
2009/06/05 PHP
php实现文本数据导入SQL SERVER
2015/05/17 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
2016/04/12 Javascript
常用JS图片滚动(无缝、平滑、上下左右滚动)代码大全(推荐)
2016/12/20 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
2017/03/13 Javascript
p5.js实现斐波那契螺旋的示例代码
2018/03/22 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
[02:46]解说DC:感谢430陪伴我们的DOTA2国际邀请赛岁月
2016/06/29 DOTA
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
[01:10:27]DOTA2-DPC中国联赛正赛 SAG vs XG BO3 第二场 3月5日
2021/03/11 DOTA
使用scrapy实现爬网站例子和实现网络爬虫(蜘蛛)的步骤
2014/01/23 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
Python @property装饰器原理解析
2020/01/22 Python
Tensorflow 多线程设置方式
2020/02/06 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
巴黎卡诗美国官方网站:始于1964年的头发头皮护理专家
2017/07/10 全球购物
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
电子信息毕业生自荐信
2013/11/16 职场文书
医疗纠纷协议书
2014/04/16 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python