1. 程式人生 > >JS計時器setTimeout()與setInterva…

JS計時器setTimeout()與setInterva…

計時器setTimeout()與setInterval()是原生JS很重要且用處很多的兩個方法, 但很多人一直誤以為是相同的功能: 間隔時間重複執行傳入的控制代碼函式. 但實際上, 並非如此, 既然JS給出了兩個不同的命名, 肯定有其迥異之處.
先來看看兩者JS手冊及英文詞典上的解釋:
JS手冊»setTimeout() : 用於在指定的毫秒數後呼叫函式或計算表示式;
英文釋義»timeout() : 超時;暫時休息;工間休息;
JS手冊»setInterval() : 按照指定的週期(以毫秒計)來呼叫函式或計算表示式. 會不停地呼叫函式,直到 clearInterval() 被呼叫或視窗被關閉;


英文釋義»interval() : 間隔;間距;幕間休息;
不難看出, 只要我們仔細體會JS手冊及命名釋義, 就能很容易的區分開兩者的區別. 簡單的說, 兩才的區別在於,setTimeout()方法是在等待指定時間後執行函式, 且只執行一次傳入的控制代碼函式. setInterval()方法是每指定間隔時間後執行一次傳入的控制代碼函式,迴圈執行直至關閉視窗或clearInterval().
為了使迷惑者更容易理解, 特意寫了個例子:
至於用法, 就不用多說了, 明白兩者區別後, 該知道怎麼取捨了.

var timeout=function(){
        alert('等待2s後彈出,僅此一次!在等待時間內clearTimeout可停止執行!')
}
var interval=function(){
        alert('每2s迴圈彈出,直至clearInterval或關閉視窗!')
}
var input=document.getElementsByTagName_r('input');

var clearTimeoutFun=null;
var clearIntervalFun=null;

input[0].onclick=function(){
        clearTimeoutFun=setTimeout(timeout,2000);
}
input[1].onclick=function(){
        clearTimeout(clearTimeoutFun);
}
input[2].onclick=function(){
        clearIntervalFun=setInterval(interval,2000);
}
input[3].onclick=function(){
        clearInterval(clearIntervalFun);
}