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类型转换方法及需要注意的问题小结(挺全面)
Nov 11 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
Sep 01 Javascript
jQuery实现图片局部放大镜效果
Mar 17 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
May 07 Javascript
JS实现全屏的四种写法
Dec 30 Javascript
Javascript blur与click冲突解决办法
Jan 09 Javascript
js判断PC端与移动端跳转
Dec 24 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
Apr 10 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 Javascript
使用webpack4编译并压缩ES6代码的方法示例
Apr 24 Javascript
使用JavaScript计算前一天和后一天的思路详解
Dec 20 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
输出控制类
2006/10/09 PHP
php数组函数array_walk用法示例
2016/05/26 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
基于jQuery捕获超链接事件进行局部刷新代码
2012/05/10 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
JavaScript实现点击按钮后变灰避免多次重复提交
2013/07/15 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
node.js中的fs.readFile方法使用说明
2014/12/15 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
2018/12/14 Javascript
JavaScript 继承 封装 多态实现及原理详解
2019/07/29 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
python利用datetime模块计算时间差
2015/08/04 Python
python如何为创建大量实例节省内存
2018/03/20 Python
Python工厂函数用法实例分析
2018/05/14 Python
利用python-pypcap抓取带VLAN标签的数据包方法
2019/07/23 Python
Python restful框架接口开发实现
2020/04/13 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
公司员工的自我评价范例
2013/11/01 职场文书
装潢设计专业推荐信模板
2013/11/26 职场文书
光荣入党自我鉴定
2014/01/22 职场文书
期终自我鉴定
2014/02/17 职场文书
我的梦想演讲稿500字
2014/08/21 职场文书
Python基础知识之变量的详解
2021/04/14 Python