clearTimeoutがどう動作しているのかわかりません

setTimeoutの識別子について理解しておきましょう。
2020年9月29日
ユーザー

レッスンでは、constTimeoutId = setTimeout(showTime,1000);というように定数に入れてから
clearTimeout(TimeoutId);というように書いてカウントを止めてたと思うのですが
試しclearTimeout(setTimeout(showTime,1000);というように書いてみました。

するとカウントが増えてもconsole.log(new Date)は止まらなかったです

止まらなかった原因はclearTimeout(setTimeout(showTimeout,1000);というところで、clearTimeout命令より、先にsetTimeout(showTimeout,1000);が読み込まれて、再び関数が実行されたからなのかと思っています。

どうでしょうか?

// 'use strict'
let i=0;

function showTime(){
  console.log(new Date);

  const TimeoutId = setTimeout(showTime,1000);
  i++;
  if(i>3){
    // clearTimeout( TimeoutId);ここはコメントアウトしてみました
    clearTimeout(setTimeout(showTime,1000));
  }
}

showTime();

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(15)