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向asp.net Mvc传递复杂json数据-ModelBinder篇
May 07 Javascript
jQuery.ajax 用户登录验证代码
Oct 29 Javascript
将字符串转换成gb2312或者utf-8编码的参数(js版)
Apr 10 Javascript
javascript中的undefined和not defined区别示例介绍
Feb 26 Javascript
浅谈下拉菜单中的Option对象
May 10 Javascript
JavaScript中浅讲ajax图文详解
Nov 11 Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
vue里面v-bind和Props 利用props绑定动态数据的方法
Aug 27 Javascript
QML实现圆环颜色选择器
Sep 25 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
vue backtop组件的实现完整代码
Apr 07 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为php增加openssl模块的方法
2011/06/14 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
Node.js中使用计时器定时执行函数详解
2014/08/15 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
详解基于vue的移动web app页面缓存解决方案
2017/08/03 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
python中的不可变数据类型与可变数据类型详解
2018/09/16 Python
python连接mongodb密码认证实例
2018/10/16 Python
python 解压pkl文件的方法
2018/10/25 Python
python3使用print打印带颜色的字符串代码实例
2019/08/22 Python
python实现XML解析的方法解析
2019/11/16 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
flask项目集成swagger的方法
2020/12/09 Python
css3实现背景颜色渐变让图片不再是唯一的实现方式
2012/12/18 HTML / CSS
解析html5 canvas实现背景鼠标连线动态效果代码
2019/06/17 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
Raleigh兰令自行车美国官网:英国凤头牌自行车
2018/01/08 全球购物
遵纪守法演讲稿
2014/05/23 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
房产授权委托书范本
2014/09/22 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
2019通用版导游词范本!
2019/08/07 职场文书
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL