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 非图片动态loading效果实现代码
Apr 09 Javascript
ECMAScript 5中的属性描述符详解
Mar 02 Javascript
jQuery实现带玻璃流光质感的手风琴特效
Nov 20 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
jquery-mobile基础属性与用法详解
Nov 23 Javascript
在一个页面重复使用一个js函数的方法详解
Dec 26 Javascript
vue代码分割的实现(codesplit)
Nov 13 Javascript
node删除、复制文件或文件夹示例代码
Aug 13 Javascript
js实现开关灯效果
Mar 30 Javascript
vue路由分文件拆分管理详解
Aug 13 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
phpmyadmin操作流程
2006/10/09 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
php实现excel中rank函数功能的方法
2015/01/20 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
简单的无缝滚动程序-仅几行代码
2007/05/08 Javascript
jQuery 位置插件
2008/12/25 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
jquery实现具有收缩功能的垂直导航菜单
2016/02/16 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
python生成指定尺寸缩略图的示例
2014/05/07 Python
Python是编译运行的验证方法
2015/01/30 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
matplotlib基础绘图命令之errorbar的使用
2020/08/13 Python
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
创业计划书中要认真思考的问题
2013/12/28 职场文书
教师节商场活动方案
2014/02/13 职场文书
2014年村官工作总结
2014/11/24 职场文书
高考1977观后感
2015/06/04 职场文书
会议室管理制度范本
2015/08/06 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers