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

 更新时间:2010年08月12日 10:23:58   作者:  
JavaScript中解决闭包只能取得包含函数中任何变量最后一个值的问题
复制代码 代码如下:

<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变量提升和严格模式实例分析

    这篇文章主要介绍了JavaScript变量提升和严格模式,结合实例形式分析了javascript变量提升和严格模式的原理及相关操作注意事项,需要的朋友可以参考下
    2019-01-01
  • web 页面分页打印的实现

    web 页面分页打印的实现

    网上找的,经我整理添加demo如下
    2009-06-06
  • javascript正则表达式中分组详解

    javascript正则表达式中分组详解

    这篇文章主要介绍了javascript正则表达式中分组的相关资料,包括捕获性分组和非捕获性分组,需要的朋友可以参考下
    2016-07-07
  • Bootstrap菜单按钮及导航实例解析

    Bootstrap菜单按钮及导航实例解析

    这篇文章主要介绍了Bootstrap菜单按钮及导航的相关资料,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-09-09
  • webpack5的loader配置小白学习篇

    webpack5的loader配置小白学习篇

    这篇文章主要为大家介绍了webpack5的loader配置非常适合webpack入门的小白学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • JavaScript获取Excel表格的列序号和列名

    JavaScript获取Excel表格的列序号和列名

    这篇文章主要介绍了JavaScript获取Excel表格的列序号和列名,在处理Excel文件时,通常要获取xx列的数据,这就要求先找到列序号,下文关于列名获取需要的小伙伴可以参考一下
    2022-05-05
  • JavaScript SHA512加密算法详细代码

    JavaScript SHA512加密算法详细代码

    这篇文章主要为大家详细介绍了JavaScript SHA512加密算法代码,具有一定的参考价值,感兴趣的朋友可以参考一下
    2016-10-10
  • 使用 JavaScript如何获取当月的第一天和最后一天

    使用 JavaScript如何获取当月的第一天和最后一天

    这篇文章主要介绍了使用 JavaScript如何获取当月的第一天和最后一天,通过本文学习了如何使用 JavaScript 中的Date.getFullYear()和 Date.getMonth()方法获得某个特定月份的第一天和最后一天,需要的朋友可以参考下
    2023-05-05
  • JavaScript面向对象中接口实现方法详解

    JavaScript面向对象中接口实现方法详解

    这篇文章主要介绍了JavaScript面向对象中接口实现方法,结合实例形式分析了javascript面向对象接口的概念、实现方法及相关操作注意事项,需要的朋友可以参考下
    2019-07-07
  • js控制一个按钮是否可点击(可使用)disabled的实例

    js控制一个按钮是否可点击(可使用)disabled的实例

    下面小编就为大家带来一篇js控制一个按钮是否可点击(可使用)disabled的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02

最新评论