setTimeout を countUp の外に出すと console.log が一度しか実行されないのは何故でしょうか?

countUp 内で setTimeout とすることで無限に処理が連鎖しているのですが、外に出すと countUp は一度しか実行されません。
2021年10月30日
ユーザー

講義内では setTimeout は function countUp 内で呼び出されていますが、

function countUp(){
   console.log(Date.now()- startTime);
   setTimeout(()=>{
       countUp();
   }, 10);
}

これを下のようにすると console.log では一度 0 が表示されただけででした。
このような結果になってしまう理由は何故なのでしょうか。

function countUp(){
   console.log(Date.now()- startTime);
}
setTimeout(()=>{
    countUp();
}, 10);

この回答を見るにはプレミアムサービスへの登録が必要です

プレミアムサービスとは?