setTimeout和setInterval的語法相同。
參數(shù)
它們都有兩個(gè)參數(shù),一個(gè)是將要執(zhí)行的代碼字符串,還有一個(gè)是以毫秒為單位的時(shí)間間隔,當(dāng)過了那個(gè)時(shí)間段之后就將執(zhí)行那段代碼。
不過這兩個(gè)函數(shù)還是有區(qū)別的,setInterval在執(zhí)行完一次代碼之后,經(jīng)過了那個(gè)固定的時(shí)間間隔,它還會(huì)自動(dòng)重復(fù)執(zhí)行代碼,而setTimeout只執(zhí)行一次那段代碼。
區(qū)別
window.setTimeout("function",time);//設(shè)置一個(gè)超時(shí)對(duì)象,只執(zhí)行一次,無周期 **
window.setInterval("function",time);//設(shè)置一個(gè)超時(shí)對(duì)象,周期='交互時(shí)間'**
停止定時(shí):
window.clearTimeout(對(duì)象) 清除已設(shè)置的setTimeout對(duì)象
window.clearInterval(對(duì)象) 清除已設(shè)置的setInterval對(duì)象
實(shí)例
實(shí)現(xiàn)一個(gè)打點(diǎn)計(jì)時(shí)器,要求
1、從 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一個(gè)數(shù)字,每次數(shù)字增幅為 1;
2、返回的對(duì)象中需要包含一個(gè) cancel 方法,用于停止定時(shí)操作;
3、第一個(gè)數(shù)需要立即輸出.
function count(start, end) {
//立即輸出第一個(gè)數(shù)
console.log(start++);
// 重復(fù)執(zhí)行函數(shù)
var timer = setInterval(function () {
// 判斷首是否小于尾
if (start <= end) {
console.log(start++);
}else {
clearInterval(timer);
}
},100);
// 返回對(duì)象
return{
cancel: function () {
clearInterval(timer);
}
}
}
count(2,6);