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 三种不同位置代码的写法
Oct 25 Javascript
什么是DOM(Document Object Model)文档对象模型
Mar 05 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
Jul 28 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 Javascript
JavaScript操作DOM元素的childNodes和children区别
Apr 01 Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 Javascript
使用jquery实现的循环连续可停顿滚动实例
Nov 23 Javascript
详解本地Node.js服务器作为api服务器的解决办法
Feb 28 Javascript
vue在index.html中引入静态文件不生效问题及解决方法
Apr 29 Javascript
Vue源码分析之Vue实例初始化详解
Aug 25 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 Javascript
一分钟学会JavaScript中的try-catch
Dec 14 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实现根据字符串生成对应数组的方法
2014/09/22 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
js简单的弹出框有关闭按钮
2014/05/05 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
javascript控制台详解
2015/06/25 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
微信小程序 实例开发总结
2017/04/26 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
vue实现分页栏效果
2019/06/28 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
详解ES6实现类的私有变量的几种写法
2021/02/10 Javascript
使用Python实现博客上进行自动翻页
2017/08/23 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
EMU Australia澳大利亚官网:澳大利亚本土雪地靴品牌
2019/07/24 全球购物
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
高中毕业自我评价
2014/02/08 职场文书
婚育证明样本
2015/06/16 职场文书
三八妇女节主持词
2015/07/04 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
Python3 多线程(连接池)操作MySQL插入数据
2021/06/09 Python
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库