說道setTimeout,很容易就會想到setInterval,因為這兩個用法差不多,但是又有區(qū)別
setTimeout
定義和用法: setTimeout()方法用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計算表達式。
語法: setTimeout(code,millisec)
參數(shù): code (必需):要調(diào)用的函數(shù)后要執(zhí)行的 JavaScript 代碼串。millisec(必需):在執(zhí)行代碼前需等待的毫秒數(shù)。 提示: setTimeout() 只執(zhí)行 code 一次。如果要多次調(diào)用,請使用 setInterval() 或者讓 code 自身再次調(diào)用 setTimeout()。
setInterval
setInterval() 方法可按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達式。
setInterval() 方法會不停地調(diào)用函數(shù),直到 clearInterval() 被調(diào)用或窗口被關(guān)閉。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的參數(shù)。
語法: setInterval(code,millisec[,"lang"])
參數(shù): code 必需。要調(diào)用的函數(shù)或要執(zhí)行的代碼串。millisec 必須。周期性執(zhí)行或調(diào)用 code 之間的時間間隔,以毫秒計。
返回值: 一個可以傳遞給 Window.clearInterval() 從而取消對 code 的周期性執(zhí)行的值。
區(qū)別
通過上面可以看出,setTimeout和setinterval的最主要區(qū)別是:
setTimeout只運行一次,也就是說設(shè)定的時間到后就觸發(fā)運行指定代碼,運行完后即結(jié)束。如果運行的代碼中再次運行同樣的setTimeout命令,則可循環(huán)運行。(即 要循環(huán)運行,需函數(shù)自身再次調(diào)用 setTimeout())
而 setinterval是循環(huán)運行的,即每到設(shè)定時間間隔就觸發(fā)指定代碼。這是真正的定時器。
setinterval使用簡單,而setTimeout則比較靈活,可以隨時退出循環(huán),而且可以設(shè)置為按不固定的時間間隔來運行,比如第一次1秒,第二次2秒,第三次3秒。