問題緣起
以下代碼會(huì)輸出一次click绎速。一開始我以為既然已經(jīng)停止了虾啦,為什么還會(huì)產(chǎn)生呢锰扶。
var timer;
timer=setTimeout(function(){
console.log("click")
},1000)
timer=setTimeout(function(){
console.log("click")
},1000)
clearTimeout(timer);
原理
實(shí)際上原理就是因?yàn)閠imer是一個(gè)指向setTimeout新線程中的引用。而clearTimeout會(huì)根據(jù)引用找到相應(yīng)的線程中的方法初家,然后清除掉偎窘。
當(dāng)你第二次給timer賦值時(shí),引用的指向已經(jīng)變了溜在。clearTimeout并沒有清除第一次的setTimeout