スポンサーリンク

【JavaScript】 「setInterval」「setTimeout」のちがいを解説

javascript
「javaScriptの『setInterval』『setTimeout』って何がちがうの?

という方向けのご紹介です。

執筆者

独学でキルミーベイベーのゲームを作っている男
・javascriptが大好きな男

setTimeoutとsetInterval

『何秒ごとに』『何秒経過したら』という処理を予約したいことがあると思います。
そんな時に使えるのがこの2つのメソッド

・setTimeout():指定時間後に1回だけ関数を実行する
・setInterval():指定した一定時間ごとに関数を実行する
タイマーやストップウォッチをイメージいただくと分かりやすいですね。
処理が一回だけなのか、インターバルになっているかの違いです。

これに対応して、処理の予約を取消するメソッドもあります。

・clearTimeout():setTimeoutの呼び出しをキャンセル
・clearInterval():setIntervalの呼び出しをキャンセル

構文自体はほとんど同じですが、使うタイミングもあわせて紹介致します。
順番に見ていきましょう。

setTimeoutとclearTimeout

まずは一回だけ処理するメソッドの基本構文から

□setTimeout(関数, 時間,関数の引数①,関数の引数②、、、)
・時間:1000=1秒
・関数の引数:ない場合は省略してOK

これで『時間が経過したら起動したい関数を発動する』という処理になります。

続いてこれを取消する場合なのですが、

□clearTimeout(timerId)
『timerIdってなに?』となる方も多いと思います。下記で解説します。

timerIdとは

setTimeoutを呼び出すと、その戻り値が返ります。

「戻り値ってなに?」という方はこちらをどうぞ
【JavaScript】わかりやすい「戻り値」と使い方

これはタイマーを識別するためのIDのようなもので、clearTimeoutで関数実行をキャンセルする際に使われます。

そのため、setTimeoutは、変数に代入して使用されることがほとんどです。
その変数名が大体「timerId」とされます。以下のように感じです。

// タイマー識別子
let timerId = setTimeout(………)
変数に格納した後にclearTimeout(timerId)とすれば処理を止めることができます。

setIntervalとclearInterval

次は時間ごとに処理するメソッドの基本構文
前置きすると「setTimeout/clearTimeout」と構文は全く同じです。

□setInterval(関数, 時間,関数の引数①,関数の引数②、、、)
・時間:1000=1秒
・関数の引数:ない場合は省略してOK

これで『時間が経過する毎に起動したい関数を発動する』という処理になります。

続いてこれを取消する場合なのですが、clearTimeoutと同様にtimerIdを使います。

□clearInterval(timerId)

同じ構文なので分かりやすいですね。

時間ごとの処理は便利なのですが一点だけ注意事項がございます。

setIntervalを使う時の注意

時間ごとに処理をする都合上、基本的に無限に処理を続けるという欠点があります。

clearIntervalで処理を止めない限り続けるので、ブラウザが重くなったりする原因になりますので、気を付けましょう。

もし、「止めた後にもう一回setIntervalを開始したいなぁ」というはこちらをご確認ください。
【JavaScript】途中で停止、再開を自由に設定する方法【setInterval】

「途中で停止させて再開させる」専用のメソッドはありませんが、できるだけ簡単に再現できるサンプルコードを載せております。

是非ご活用ください。

まとめ

最後に、setinterval周りのパターンをまとめておきます。

・setTimeout:時間が経って一回だけ処理する
・clearTimeout:setTimeoutを含んだ変数を代入すると処理を止める
・setInterval:時間ごとに処理する
・clearInterval:setIntervalを含んだ変数を代入すると処理を止める

以上となります。

setTimeoutはjavaScriptを使用する上で大変便利な機能です。
構文はシンプルですが、クリックイベントなどと組み合わせることで色々な挙動を実現できます。当記事が理解の助けになれば幸いです。

また、当サイトでは初学者向けにゲームの作り方を紹介しております。

【JavaScript】リバーシ(オセロ)の作り方を初学者向けに1行づつ解説!①【ゲーム】

ゲームを作るのはとても勉強になりますし、モチベーション維持にもつながります。
興味があればご活用ください。