stone310
因为你的计时器重复了,没有停止,逐个分析一下一开始:num=5,调用setTimerout第1次显示 : num=4 ,判断——调用setInterval(第一次调用)第2次显示:num=3,判断——调用setInterval(第二次调用),调用了2次了,下一次num就直接跳2次,即执行2次num-1第3次显示:num=1,判断——调用setInterval(第三次调用),调用了3次了,下一次num就直接跳3次,即执行3次num-1第4次显示:num=0!(这里会显示num=0,然后执行,只是太快了你看不见,你可以将执行代码改成alert("123")试试),因为执行num跳3次,其中第一次执行完num就会等于0然后判断num==0,不调用计时器,执行程序,这时候计时器还是被调用了3次,继续!下一次num还是跳3次第5次显示:num=-3..............无限循环。其实问题很简单就是加上clearInterval, 但执行的时候可能会没有发现其实有第4步,也就是计时器叠加执行的原理