把Timeout改為Interval,神奇現(xiàn)象:1 2 4 8數(shù)字極快速度翻倍地跳
setlnterval()本來就是隔一段時間運行一次,setTimeout()放在函數(shù)里也實現(xiàn)了無限循環(huán)的功能,前者更簡單點啊,實際運用setInterval之后發(fā)現(xiàn)數(shù)字跳動是:1,2,4,8,16,32...還不是一秒一次而是超級快,一會兒瀏覽器就爆炸了,有大神說這是什么setInterval的累積效應(yīng),百度看不懂。下面代碼是把例題中的Timeout改為了Interval,就出現(xiàn)了上面說的神奇現(xiàn)象。
<!DOCTYPE?HTML> <html> <head> <script?type="text/javascript"> var?num=0; function?numCount(){ ?document.getElementById('txt').value=num; ?num=num+1; ?setInterval("numCount()",1000); ?} </script> </head> <body> <form> <input?type="text"?id="txt"?/> <input?type="button"?value="Start"?onClick="numCount()"?/> </form> </body> </html>
2019-08-29
這個其實也很好理解的,點擊開始按鈕執(zhí)行numCount()函數(shù)會立刻綁定一個計時器,計時器1秒后執(zhí)行numCount()函數(shù)又會綁定一個計時器,也就是說1秒鐘之后會有兩個計時器,2秒鐘是4個,每隔1秒計時器翻倍8,16,32...。每個計時器每隔1秒都會執(zhí)行numCount()函數(shù),同時也會使num值加1,num值也會越增越快,計時器有多少每次num值就增加多少,所以文本框中顯示的就是1,1+2,1+2+4,1+2+4+8,1+2+4+8+16...