利用闭包实现弹出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);
}
}
初音ミクD调教
9 years, 6 months ago
Answers
特意查了一下这个问题,说是因为chorme的问题,附上答案链接 http://www.zhihu.com/question/20507212
神奇一路神
answered 9 years, 6 months ago