首页 > 代码库 > 闭包循环问题-for循环只显示最后一个i的值
闭包循环问题-for循环只显示最后一个i的值
如下,正常应该输出是的1,但是下面的输出结果是5
原因(参照js中的预解释篇)
首先会对变量进行预解释,带有var和function的变量(等号左边的,因为右边属于定义值)
上面在预解释中声明了a和i,然后循环中对a[i]进行定义,但是未执行即
a[0] = function(){ a[1] = function(){
return i; return i;
} } ...
当循环结束时调用a[1]()此时要返回i,这时会在同级中寻找i,未找到则追溯到上一级,这时上一级的i已经被加加成4,则无论是数组中的哪个值返回的都会是5
在解决这个问题时常常会使用立即执行函数的方式
因为立即执行函数在4-8行时声明、定义、执行一起完成了,所以找到的i就是当前的值
相关文档
http://www.cnblogs.com/ZinCode/p/5551907.html
https://www.zhihu.com/question/33468703
闭包循环问题-for循环只显示最后一个i的值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。