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

宝慕林4294392
TA贡献2021条经验 获得超8个赞
不加闭包,引用的都是同一个i,自然都是6。
后面那个很有趣,当你不是用alert显示i,而是用log显示i时,它必然是有序的,这说明回调是按顺序压入执行线程的,所以alert的乱序和setTimeout或者setInterval本身没关系。
那为什么会乱序呢?这是因为alert会打断程序的执行,阻塞执行线程,会导致setTimeout和setInterval的结果具有不确定性,自然就不能保证顺序。
所以结论是,不要用alert。
添加回答
举报
0/150
提交
取消