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 相关文章推荐
Javascript 布尔型分析
Dec 22 Javascript
点击进行复制的JS代码实例
Aug 23 Javascript
JS延迟加载加快页面打开速度示例代码
Dec 30 Javascript
js或jquery实现页面打印可局部打印
Mar 27 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
Jan 21 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
May 13 Javascript
JS基于面向对象实现的选项卡效果示例
Dec 20 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
Jan 20 Javascript
JavaScript hasOwnProperty() 函数实例详解
Aug 04 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
Apr 16 Javascript
Vue组件生命周期运行原理解析
Nov 25 Vue.js
Vue实现随机验证码功能
Dec 29 Vue.js
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 has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
php smarty函数扩展
2010/03/15 PHP
php学习之数据类型之间的转换代码
2011/05/29 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
Laravel框架模型的创建及模型对数据操作示例
2019/05/07 PHP
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
JqGrid web打印实现代码
2011/05/31 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
从零学python系列之从文件读取和保存数据
2014/05/23 Python
django接入新浪微博OAuth的方法
2015/06/29 Python
详细介绍Python的鸭子类型
2016/09/12 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
详解Python Matplotlib解决绘图X轴值不按数组排序问题
2019/08/05 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
更新pip3与pyttsx3文字语音转换的实现方法
2019/08/08 Python
jupyter notebook 实现matplotlib图动态刷新
2020/04/22 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
教师专业理论水平的自我评价分享
2013/11/09 职场文书
网页美工求职信范文
2014/04/17 职场文书
国际经济与贸易专业求职信
2014/07/10 职场文书
公司年底活动方案
2014/08/17 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android