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中字符串拼接需注意的问题
Jul 13 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
Aug 25 Javascript
jquery可定制的在线UEditor编辑器
Nov 17 Javascript
玩转JavaScript OOP - 类的实现详解
Jun 08 Javascript
JavaScript常用代码书写规范的超全面总结
Sep 11 Javascript
微信小程序 wx.request(object) API详解及实例代码
Sep 30 Javascript
js倒计时小实例(多次定时)
Dec 08 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
原生JS实现随机点名项目的实例代码
Apr 30 Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 Javascript
详解JSON.stringify()的5个秘密特性
May 26 Javascript
vue首次渲染全过程
Apr 21 Vue.js
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
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
编写Smarty插件在模板中直接加载数据的详细介绍
2013/06/26 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
2015/01/07 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
Mootools 1.2教程 正则表达式
2009/09/15 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
javascript通过获取html标签属性class实现多选项卡的方法
2015/07/27 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
8 行 Node.js 代码实现代理服务器
2016/12/05 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
nodejs个人博客开发第一步 准备工作
2017/04/12 NodeJs
浅谈Node Inspector 代理实现
2017/10/19 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
JavaScript 判断对象中是否有某属性的常用方法
2018/06/14 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
python中的数据结构比较
2019/05/13 Python
python实现的config文件读写功能示例
2019/09/24 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
爱游人:Travelliker
2017/09/05 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
值传递还是引用传递
2015/02/08 面试题
个人简历中的自我评价范例
2013/10/29 职场文书
环境卫生倡议书
2014/08/29 职场文书
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
党员评议思想汇报
2014/10/08 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
2021/04/22 PostgreSQL