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动画animate的stop方法使用详解
May 09 Javascript
javascript字符串循环匹配实例分析
Jul 17 Javascript
url中的特殊符号有什么含义(推荐)
Jun 17 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
利用js的闭包原理做对象封装及调用方法
Apr 07 Javascript
Iscrool下拉刷新功能实现方法(推荐)
Jun 26 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
Sep 17 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
Vue.use源码学习小结
Jun 20 Javascript
JS添加或删除HTML dom元素的方法实例分析
Mar 05 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
postman自定义函数实现 时间函数的思路详解
Apr 17 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把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
javascript 解析url的search方法
2010/02/09 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
zTree异步加载展开第一级节点的实现方法
2017/09/05 Javascript
用vue构建多页面应用的示例代码
2017/09/20 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
JavaScript中的全局属性与方法深入解析
2020/06/14 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
Python实现的彩票机选器实例
2015/06/17 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
python dict乱码如何解决
2020/06/07 Python
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
什么是聚集索引和非聚集索引
2012/01/17 面试题
文员岗位职责范本
2014/03/08 职场文书
海飞丝的广告词
2014/03/20 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
pytest进阶教程之fixture函数详解
2021/03/29 Python
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
Golang 入门 之url 包
2022/05/04 Golang