代码1:
for (var i = 0; i < 5; i++) {
setTimeout((function(){
console.log("delayer:" + i);
})(),0);
console.log(i);
}
问题:
代码1:setTimeout(立即执行函数,0)循环里面不是有console.log(i),为什么不是先执行console.log(i)而是先执行setTimeout(立即执行函数,0)
代码1:
for (var i = 0; i < 5; i++) {
setTimeout((function(){
console.log("delayer:" + i);
})(),0);
console.log(i);
}
问题:
代码1:setTimeout(立即执行函数,0)循环里面不是有console.log(i),为什么不是先执行console.log(i)而是先执行setTimeout(立即执行函数,0)
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
(function(){console.log(1)})();
这样的立即执行函数,直接运行了,这后面的console.log和setTimeout有什么关系了。。
调用setTimout的时候,相当于调用立刻执行函数返回的undefinde