[js]setTimeout指针项改变的问题

问题缘起

以下代码会输出一次click。一开始我以为既然已经停止了,为什么还会产生呢。

var timer;
timer=setTimeout(function(){
    console.log("click")
},1000)
timer=setTimeout(function(){
    console.log("click")
},1000)
clearTimeout(timer);

原理

实际上原理就是因为timer是一个指向setTimeout新线程中的引用。而clearTimeout会根据引用找到相应的线程中的方法,然后清除掉。
当你第二次给timer赋值时,引用的指向已经变了。clearTimeout并没有清除第一次的setTimeout

你可能感兴趣的:([js]setTimeout指针项改变的问题)