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