1. setInterval()
計時器,每隔一個指定時間段,重復(fù)執(zhí)行的代碼塊或方法,以毫秒為單位,最小為10-15ms
有返回值,是頁面中第幾個計時器返回值就是幾
在火狐中,返回值從2開始
在其他瀏覽器,返回值從1開始
計時器中可嵌套計時器,但是不允許嵌套?。?!
var set1 = setInterval(function () {
box1.style.backgroundColor = `rgb(${rand(0, 255)},${rand(0, 255)},${rand(0, 255)})`;
}, 500);
清除計時器
clearInterval()可取消由setInterval()設(shè)置的timeout,可以直接運行,但是一般有觸發(fā)條件
clearInterval(set1); 可寫計時器名或計時器ID
清除頁面全部計時器
必須寫在頁面底部
function clearIntervalAll(){
// res可以得到頁面所有定時器
// 根據(jù)clearInterval可以使用id清除計數(shù)器的原理
// 借助 for 循環(huán) 將 id 寫到 每一個 clearInterval 里面
// 這樣就可以清除頁面全部定時器
var res=setInterval(function(){})
for(var i=0;i<res;i++){
clearInterval(i);
}
}
2. setTimeout()
定時器,規(guī)定指定時間ms后,執(zhí)行一次
var i = 10;
setInterval(function(){
console.log(i--);
},1000)
3. 閉包
定義:
在函數(shù)內(nèi)部嵌套定義一個函數(shù),在內(nèi)部函數(shù)中,操作外部函數(shù)的變量,并在函數(shù)外調(diào)用內(nèi)部的操作函數(shù),才會形成閉包
特點:
可以使外部函數(shù)的局部變量暫存,不會銷毀
用途:
避免全局變量污染,變量長期駐扎在內(nèi)存中
總結(jié):
函數(shù)內(nèi)聲明一個函數(shù),并對外層函數(shù)內(nèi)的變量進行操作,而且在函數(shù)體外部觸發(fā)內(nèi)部函數(shù),這其中所形成的的閉合回路叫閉包