[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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • JavaScript提供定時執行代碼的功能,叫做定時器(timer),主要由setTimeout()和setInt...
    晚晴幽草閱讀 1,670評論 1 18
  • HTML HTML5標簽 媒體查詢head部分寫法 Doctype作用? 嚴格模式與混雜模式如何區分?它們有何意義...
    Mayo_閱讀 666評論 0 8
  • 聽奶奶說!我三歲就跟她在一起過日子了!小時候記憶里只有奶奶和我相依為命,從小奶奶教我做人做事、給我講故事,是奶奶陪...
    流浪孤兒閱讀 329評論 0 1
  • 此書副標題為‘電商后臺系統產品邏輯全解析’,從副標題能看出,講的主要是后臺系統的內容。整本書看下來,算是把電商(書...
    帶好我的包閱讀 2,999評論 0 4