JavaScriptで一定間隔で関数を実行する場合、setInterval関数がよく使われます。しかし、’setInterval(“関数名”,1000);’の挙動について正しく理解していないと、意図しない動作をすることがあります。ここではsetIntervalの基本と注意点を解説します。
setIntervalの基本動作
setIntervalは指定したミリ秒ごとに、引数で渡した関数を繰り返し実行します。例えば、1000ミリ秒(1秒)ごとに処理を実行したい場合に使用されます。
コード例:setInterval(myFunction, 1000);
この場合、myFunctionが1秒ごとに呼び出されます。
文字列で関数名を渡す場合の注意点
質問にあるように、’setInterval(“関数名”,1000);’と文字列で指定することも可能ですが、これは推奨されません。文字列評価(eval)を内部で行うため、パフォーマンスが低下したり、セキュリティ上のリスクがあります。
必ず関数参照を渡す方法(setInterval(myFunction, 1000))を使う方が安全で確実です。
関数は永遠に実行されるのか?
setIntervalで設定した関数は、clearIntervalで停止するまで繰り返し実行されます。つまり、明示的に停止させない限り無限に実行され続けます。
停止させるには、setIntervalの戻り値(タイマーID)を使用します。let timerId = setInterval(myFunction, 1000);
clearInterval(timerId);
setIntervalの使い方のポイント
setIntervalを使用する場合、処理時間が実行間隔より長くなると、呼び出しが重なり遅延が発生することがあります。その場合はsetTimeoutで再帰的に呼び出す方法も検討できます。
また、アニメーションやUI更新などのケースでは、requestAnimationFrameの使用が推奨される場合があります。
まとめ
setIntervalは指定した間隔で関数を繰り返し実行する仕組みで、明示的に停止させない限り永遠に実行されます。文字列で関数名を渡す方法は避け、関数参照を使用することが安全です。また、処理時間やパフォーマンスを考慮して適切に使うことが重要です。


コメント