作家
登录

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

作者: 来源:www.28hudong.com 2013-03-30 01:23:27 阅读 我要评论

复制代码 代码如下: <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>

  推荐阅读

  js随机密码产生函数

复制代码 代码如下: function randPassword() { var text=['abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ','1234567890','~!@#$%^&*()_+";",./?<>']; var rand = function(min, max){return Math.flo>>>详细阅读


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

地址:http://www.17bianji.com/kaifa2/JS/25887.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)