因为JS的异步机制,循环很快就执行完了,等到执行回调console出来的时候,i是最后一个值,也就是5。
非常感谢,,刚刚上网搜了关于JS异步处理机制的帖子 是不是能说明事件队列对函数的执行起到了影响!!
@奋斗的少年-欧耶 我也只是一知半解而已,具体原理你还是继续找一下大神们的解析吧(∩_∩)
@trustme326: 恩恩 好的 还是非常感谢你~~
定时器是异步执行 , 你可以通过闭包将i 当参数传递进去 才能输出 1,2,3,4,5
for (var i = 0; i < 5; i++) {
(function(i){
setTimeout(function () {
console.log(i);
}, i * 1000);
})(i)
你是在不懂;就记住(function(){ 你的自己写的函数 })(i) 就这样,用壳子把你自己的逻辑包裹起来
刚刚看了一楼提供的网上关于JS异步处理工作机制,这个是否可以解释,为什么会出现这样的效果呢?? 我感觉用这套理论来说明的话比较合理!!