猿问

怎样解决定时器里i的问题

这段代码如果不加封闭空间(被注释部分),一直弹6,加了封闭空间就没有规律的乱弹了,哪位大神能帮忙解决一下定时器里i的问题(换成timeout也是不好使的),让他在定时器里面弹出0,1,2,3,4,5,

ITMISS
浏览 624回答 1
1回答

宝慕林4294392

不加闭包,引用的都是同一个i,自然都是6。后面那个很有趣,当你不是用alert显示i,而是用log显示i时,它必然是有序的,这说明回调是按顺序压入执行线程的,所以alert的乱序和setTimeout或者setInterval本身没关系。那为什么会乱序呢?这是因为alert会打断程序的执行,阻塞执行线程,会导致setTimeout和setInterval的结果具有不确定性,自然就不能保证顺序。所以结论是,不要用alert。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答