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 相关文章推荐
理解Javascript_10_对象模型
Oct 16 Javascript
javascript中关于执行环境的杂谈
Aug 14 Javascript
EasyUI实现第二层弹出框的方法
Mar 01 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
Jun 08 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
WEB前端实现裁剪上传图片功能
Oct 17 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 Javascript
php 修改密码实现代码
May 24 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
Aug 31 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
Sep 09 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实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
JavaScript的类型简单说明
2010/09/03 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
详解AngularJs中$resource和restfu服务端数据交互
2016/09/21 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
Javascript网页抢红包外挂实现分享
2018/01/11 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
微信小程序图片轮播组件gallery slider使用方法详解
2018/01/31 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
2018/02/02 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
小程序实现长按保存图片的方法
2019/12/31 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
[07:54]DOTA2 MV《我的动力鞋》 ImbaTV 出品
2014/11/21 DOTA
python rsa 加密解密
2017/03/20 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python3.0 实现决策树算法的流程
2019/08/08 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
在CentOS7下安装Python3教程解析
2020/07/09 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
怎样写好自我鉴定
2013/12/04 职场文书
打架检讨书100字
2014/01/19 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
入党群众意见范文
2015/06/02 职场文书
申请吧主发表的感言
2015/08/03 职场文书
2016教师国培研修感言
2015/12/08 职场文书
教师师德承诺书2016
2016/03/25 职场文书
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python