btn[0].onclick = function(){
var timer = null;
timer = setInterval(function(){
console.log('a');
},1000)
console.log(typeof timer); //返回的是一個number數據類型
}segmentfault
DOM事件必須用綁定時所使用的同一個函數才能解綁。這是由於DOM事件不是由JavaScript來觸發的,而是瀏覽器觸發的。無論你綁定不綁定處理函數,也無論你綁定多少個事件處理函數,事件就在那裏,只要用戶點擊了元素,click事件就會觸發。因此你再也不須要對這個事件進行處理的時候,只需解綁相應的函數便可。
而定時器事件不同,它是JavaScript設定的,你能夠在一個網頁中設定多個定時器,所以你須要一個獨一無二的東西來表明特定的定時器。但你沒法取消對定時器事件的綁定,只能關閉這個定時器(其實徹底能夠把定時器事件設定成跟DOM事件同樣的風格,先設置一個定時器,而後能夠隨時給這個定時器綁定、解綁處理函數而不是直接關閉處理器。之因此沒有這樣設計,應該是歷史緣由吧哈哈)。
定時器在JavaScript語言中並無相應的類型,所以咱們只能得到一個與定時器有關的數據,這樣才能使用系統提供的函數來啓動和關閉它。這個數據能夠是一個string,一個number,甚至是一個array什麼的都無所謂,可是最簡單有效的方式就是用一個number了。瀏覽器
segmentfault也是一箇中國開發者技術社區,感受很厲害的樣子
做者:陳安
連接:https://www.zhihu.com/question/31932536/answer/53917339
來源:知乎
著做權歸做者全部,轉載請聯繫做者得到受權。函數