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 SocialHistory 检查访问者是否访问过某站点
Aug 02 Javascript
jquery中获得$.ajax()事件返回的值并添加事件的方法
Apr 15 Javascript
jquery下json数组的操作实现代码
Aug 09 Javascript
js 时间格式与时间戳的相互转换示例代码
Dec 25 Javascript
js获取当前地址 JS获取当前URL的示例代码
Feb 26 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
javascript获取当前的时间戳的方法汇总
Jul 26 Javascript
js实现的简洁网页滑动tab菜单效果代码
Aug 24 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
Oct 08 Javascript
利用vue写todolist单页应用
Dec 15 Javascript
vue弹窗消息组件的使用方法
Sep 24 Javascript
JavaScript实现模态对话框实例
Jan 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
使用apache模块rewrite_module (转)
2007/02/14 PHP
一步一步学习PHP(2)――PHP类型
2010/02/15 PHP
深入PHP变量存储的详解
2013/06/13 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
php导出word格式数据的代码实例
2013/11/25 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
9个经典的PHP代码片段分享
2014/12/18 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
javascript高级学习笔记整理
2011/08/14 Javascript
尝试在让script的type属性等于text/html
2013/01/15 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
BootStrap下的弹出框加载select2框架失败的解决方法
2017/08/31 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
python处理cookie详解
2014/02/07 Python
python tensorflow基于cnn实现手写数字识别
2018/01/01 Python
python使用Tesseract库识别验证
2018/03/21 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
会计自我鉴定
2013/11/02 职场文书
运动会广播稿500字
2014/01/28 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
化工厂员工工作总结
2015/10/15 职场文书
MySQL快速插入一亿测试数据
2021/06/23 MySQL
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python
Python 图片添加美颜效果
2022/04/28 Python
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers