JavaScript中通过闭包解决只能取得包含函数中任何变量最后一个值的问题


Posted in Javascript onAugust 12, 2010
<script type="text/javascript"> 
function createArray() { 
var arr = new Array(); 
for (var i = 0; i < 10; i++) { 
arr[i] = function () { 
return i; 
} 
} 
return arr; 
} 
var funcs = createArray(); 
for (var i = 0; i < funcs.length; i++) { 
document.write(funcs[i]() + "<br />"); 
} 
//以上输出全部是i的最后一次的值(10),即会输出10个10,显然这不是我们想要的 
//原因:因为每个函数都保存了createArray函数的活动对象,所以他们引用的都是同一个i(按引用传的值) 
//解决方案:把按引用传参修改为按值传参 
function createArray() { 
var arr = new Array(); 
for (var i = 0; i < 10; i++) { 
arr[i] = function (num) { 
return function () { 
return num; 
} 
} (i);//调用此匿名函数返回内部匿名函数,这里多了一步按值传递参数 
} 
return arr; 
} 
var funcs = createArray(); 
for (var i = 0; i < funcs.length; i++) { 
alert(funcs[i]() + "<br />"); 
} 
//以上输出的为理想结果 
</script>
Javascript 相关文章推荐
js将iframe中控件的值传到主页面控件中的实现方法
Mar 11 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 Javascript
JS正则表达式比较常见用法
Jan 26 Javascript
jQuery 获取多选框的值及多选框中文的函数
May 16 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
Sep 18 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
jQuery EasyUI Panel面板组件使用详解
Feb 28 Javascript
微信小程序Redux绑定实例详解
Jun 07 Javascript
如何解决vue2.0下IE浏览器白屏问题
Sep 13 Javascript
vue根据值给予不同class的实例
Sep 29 Javascript
详解Vue组件之作用域插槽
Nov 22 Javascript
electron踩坑之remote of undefined的解决
Oct 06 Javascript
JavaScript 通过模式匹配实现重载
Aug 12 #Javascript
js更优雅的兼容
Aug 12 #Javascript
页面只有一个text的时候,回车自动submit的解决方法
Aug 12 #Javascript
javascript闭包的理解和实例
Aug 12 #Javascript
javascript 词法作用域和闭包分析说明
Aug 12 #Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
Aug 11 #Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
Aug 11 #Javascript
You might like
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
javascript两种function的定义介绍及区别说明
2013/05/02 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
2016/05/17 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
基于Bootstrap框架菜鸟入门教程(推荐)
2017/09/17 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
JS中offset和匀速动画详解
2018/02/06 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
layui按条件隐藏表格列的实例
2019/09/19 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
python实现跨文件全局变量的方法
2014/07/07 Python
Python实现的二维码生成小软件
2014/07/11 Python
Python实现Kmeans聚类算法
2020/06/10 Python
python实现蒙特卡罗方法教程
2019/01/28 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
Sql面试题
2013/03/20 面试题
结构和类有什么异同
2012/07/16 面试题
DOM和JQuery对象有什么区别
2016/11/11 面试题
会计毕业生自荐信
2013/11/21 职场文书
教学改革实施方案
2014/03/31 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
入党积极分子考察意见
2015/06/02 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
Python字符串的转义字符
2022/04/07 Python
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技