JS闭包以及具体题目2
2016-05-26 16:47
323 查看
以下程序有什么问题,如何改进?
当定时器或事件执行时,for循环早就结束了,这个是i已经是最大值
解决方法是用闭包把每次循环i的值保存起来
function printListItem(arr){ var i, l = arr.length - 1; for(var i = 0; i <l ; i++){ setTimeout(function(){ console.info(arr[i]); }, 200); } }
当定时器或事件执行时,for循环早就结束了,这个是i已经是最大值
解决方法是用闭包把每次循环i的值保存起来
function printListItem2(arr){ var i, l = arr.length - 1; for(var i = 0; i <l 4000 ; i++)(function(i){ setTimeout(function(){ console.info(arr[i]); }, 200); })(i); }
相关文章推荐
- [RxJS] Combination operator: combineLatest
- 辨析JavaScript中的Undefined类型与null类型
- javascript 判断是否是数组
- JS实现浏览器全屏和退出全屏
- json各种技术
- jsp生成html
- 微博登录界面的实现
- JavaScript数组的栈方法与队列方法详解
- 详解JavaScript中this关键字的用法
- js 使用总结
- jsp 静态引入<%@ include %> 动态引入<jsp:include> 区别
- (javascript)做 HTML5页面时怎么判断手机软键盘是否隐藏?
- Extjs combo赋值与刷新的先后顺序
- js 自定义hashmap
- 【学习】条码扫描器:QuaggaJS
- js判断主流浏览器类型和版本号的简单实现代码
- JSP系列:(1)JSP基础
- HTML5 - 使用JavaScript控制<audio>音频的播放
- JavaScript原生实现多组图片切换
- JSPatch