setTimeout 和setInterval從字面上應該是可以知道其大意的。timeout:延時;interval:間隔; 兩者的區別就像是它們自己的英文解釋一樣:setTimeout是延時執行,並且它只執行一次(ps:當然也有方法讓它無限執行);setInterval是間隔式的執行,每隔多少時間 ...
setTimeout 和setInterval從字面上應該是可以知道其大意的。timeout:延時;interval:間隔;
兩者的區別就像是它們自己的英文解釋一樣:setTimeout是延時執行,並且它只執行一次(ps:當然也有方法讓它無限執行);setInterval是間隔式的執行,每隔多少時間就執行一次。它會不斷地迴圈執行。舉個小例子:
上面說到setTimeout可以實現迴圈執行,方法也很簡單,就是用一個遞歸就可以了。(ps:遞歸可以理解為在一個函數裡面再去調用它自己)
那麼實現原理就是setTimeout在一個函數內使用,並且它的function函數參數傳遞的就是它所在的函數。一般情況下遞歸調用是需要有一個結束的條件的,不然就變成了死迴圈。在
其他編程語言中這是我們不想要的結果,但是把這個死迴圈放在我們的這個setTimeout裡面來就剛剛好可以實現間隔性的執行函數。不知道我有沒有說明白,沒有明白的話,看代碼:又舉個小例子(ps:這個例子是在某一本圖書中看到的,感覺還不錯的樣子,粘貼過來供大家學習)
script代碼塊
body代碼塊
好啦,這兩者的分享就到這裡了。由於本人才疏學淺,有些地方表達不太準確或者有誤希望大家指出,共同學習。