1 回答

TA貢獻361條經(jīng)驗 獲得超191個贊
因為你的計時器重復(fù)了,沒有停止,逐個分析一下
一開始:num=5,調(diào)用setTimerout
第1次顯示 : num=4 ,判斷——調(diào)用setInterval(第一次調(diào)用)
第2次顯示:num=3,判斷——調(diào)用setInterval(第二次調(diào)用),調(diào)用了2次了,下一次num就直接跳2次,即執(zhí)行2次num-1
第3次顯示:num=1,判斷——調(diào)用setInterval(第三次調(diào)用),調(diào)用了3次了,下一次num就直接跳3次,即執(zhí)行3次num-1
第4次顯示:num=0?。ㄟ@里會顯示num=0,然后執(zhí)行,只是太快了你看不見,你可以將執(zhí)行代碼改成alert("123")試試),
因為執(zhí)行num跳3次,其中第一次執(zhí)行完num就會等于0
然后判斷num==0,不調(diào)用計時器,執(zhí)行程序,這時候計時器還是被調(diào)用了3次,繼續(xù)!下一次num還是跳3次
第5次顯示:num=-3..............無限循環(huán)。
其實問題很簡單就是加上clearInterval, 但執(zhí)行的時候可能會沒有發(fā)現(xiàn)其實有第4步,也就是計時器疊加執(zhí)行的原理
添加回答
舉報