本文實例分析了js超時調用setTimeout和間歇調用setInterval的用法。分享給大家供大家參考。具體如下:
今天看了javascript高級程序設計(第三版)一書,發現說setTimeout比setInterval更好,覺得的確如此。平時都是用setInterval多點,現在還是轉一下思路了。又學習到了。分析如下:
setTimeout包含兩個參數,第一個參數是要執行的代碼,第二個參數是時間。
第一個參數可以是字符串也可以是函數,但是推薦使用函數而不是字符串。
使用字符串相當於eval方法。導致性能損失。
clearTimeout()
超時調用的代碼都是在全局作用域中執行的,因此函數中this的值在費嚴格模式下指向window對象,在嚴格模式下是undefined
復制代碼 代碼如下://setInval
var num = 0;
var max = 10;
var intervalId = null;
function incrementNumber(){
num++;
if(num == max){
clearInterval(innervalId);
alert('done');
}
}
intervalId = setInterval(incrementNumber(),500);
//setTimeout 實現相同功能
var num = 0;
var max = 10;
function incrementNumber2(){
num++;
if(num < max){
setTimeout(incrementNumber2,500);
}else{
alert('done');
}
}
setTimeout(incrementNumber2,500);
以上對比可以發現,使用超時調用時,沒有必要跟蹤超時調用id,因為每次執行代碼之後,如果不再設置另一次超時調用,調用就會自行停止。
一般認為,如果超時調用用來模擬間歇調用的是一種最佳模式。
在開發環境下,很少真正的間歇調用,原因是後一個間歇調用可能會在前一個間隙調用結束之前啟動。
最好不要使用間歇調用。
希望本文所述對大家的javascript程序設計有所幫助。