鏈接地址:https://zhidao.baidu.com/question/808980857761575052.html
因爲setTimeout(表達式,延時時間)在執行時,是在載入後延遲指定時間後,去執行一次表達式,記住,次數是一次
而setInterval(表達式,交互時間)則不一樣,它從載入後,每隔指定的時間就執行一次表達式
所以,完全是不一樣的
很多人習慣於將setTimeout包含於被執行函數中,然後在函數外再次使用setTimeout來達到定時執行的目的
這樣,函數外的setTimeout在執行函數時再次觸發setTimeout從而形成周而復始的定時效果
使用的時候各有各的優勢,使用setInterval,需要手動的停止tick觸發。而使用方法中嵌套setTimeout,可以根據方法內部本身的邏輯不再調用setTimeout就等於停止了觸發。
其實兩個東西完全可以相互模擬,具體使用那個,看當時的需要而定了。就像for可以模擬所有的循環包括分支,而還提供了do、while一樣。
//每60秒執行myFunction()一次
setInterval("myFunction()",60000);
funcition myFunction(){
alert(’myFunction()’);
}
//每60秒執行一次myFunction()
setTimeout("myFunction()",60000); //需要函數觸發
//如 放置在 body 的 onload事件裏面