利用闭包实现弹出1,2,3,4,5中两种实现方式的区别
利用闭包可以实现一些特殊效果,比如下面两段代码:
function timeManage1() {
for (var i = 0; i < 5; i++) {
(function(num) {
setTimeout(function() {
console.log(num);
}, 1000);
})(i);
}
}
function timeManage2() {
for (var i = 0; i < 10; i++) {
setTimeout((function(e) {
return function() {
console.log(e);
}
})(i), 1000)
}
}
都是实现输出0,1,2,3,4。可是为什么第一段代码把console.log(num)换成alert(num)后弹出的数字顺序就不多了,而第二段就不存在这个问题呢?
function timeManage1() {
for (var i = 0; i < 5; i++) {
(function(num) {
setTimeout(function() {
alert(num);//弹出的数字顺序不对
}, 1000);
})(i);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
特意查了一下这个问题,说是因为chorme的问题,附上答案链接http://www.zhihu.com/question/20507212