👀

setInterval() の引数にアロー関数を使う【個人学習まとめ】

2025/01/02に公開

setInterval()って?

構文

setInterval(関数,待ち時間);

第一引数に待ち時間(ミリ秒)が経過するたびに実行する関数本体を指定する。
第二引数に待ち時間を指定する(省略可。省略した場合は0になる)。

間違い例

実際に自分がやらかしたコード。

setInterval(fn(...args),t);

このように書くと、fnが即座に実行されてしまいfnの戻り値がsetIntervalに渡される。
fn(x) => x * 2args[4]の場合、fnの戻り値は8となる。
setInterval関数ではなく、8を受け取りエラーとなる。

正しい例

最初にも書いたが、setIntervalの第一引数には関数本体を渡す必要がある。

setInterval(() => fn(...args), t);

このように書くことによって、setIntervalfn(..args)そのものを渡すことができる。

動作

間違い例(fn(...args)を直接渡す)

const fn = (x) => console.log(x * 2);
const args = [4];
setInterval(fn(...args), 1000); 

即座にfn(4)が実行されるためエラーとなる。
エラー内容
Uncaught TypeError TypeError [ERR_INVALID_ARG_TYPE]: The "callback" argument must be of type function. Received undefined

正しい例(アロー関数を使って「関数本体」を渡す)

const fn = (x) => console.log(x * 2);
const args = [4];
setInterval(() => fn(...args), 1000); 

1秒ごとにfn(4)が呼び出されて、結果8が出力される。

個人的なまとめ

setInterval関数の中でfn(...args)を実行するためにアロー関数を引数として渡すというイメージを持つと分かりやすい。

Discussion