つまづいたのでメモ
これの違い
setTimeout(func(), delay)
setTimeout(() => func(), delay)
説明
const log = () => console.log('aaa')
setTimeout(log(), 5000) // => 5sまたずに、 aaa 出力
ブラウザが左から解釈していくとします。
第一引数のlog()
つまりconnsole.log
を実行して、5秒後に tsでいう void、つまり何も返さずに実行されて終わります。
const log = () => console.log('aaa')
setTimeout(() => log(), 5000); // => 5s待って、 aaa 出力
ブラウザが左から解釈していくとします。
第一引数の() => log()
つまりconnsole.log
を実行することを定義された無名関数がセットされ、その関数が5秒後に実行されます。