🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

JavaScript clearTimeout の使い方【初心者向け】

一度だけの処理を途中で止めたいときに使える関数

⏹️ clearTimeoutとは?

setTimeout() をキャンセル(無効化)するための関数です。

🧠 どんなときに使うの?

シーンどう使う?なぜキャンセルする?
🔘 一時的な通知3秒後にメッセージを消す予定 → ユーザーが閉じたらキャンセル無駄な処理を防ぐ
⌨️ 入力欄の遅延検索タイピング中にタイマー開始 → 次のキー入力でキャンセルAPIの過剰呼び出し防止
🧯 警告メッセージ「3秒以内にキャンセルすれば…」のような仕様誤操作を防ぐ
🖱️ ホバー時の説明表示数秒後に表示予定 → マウスが離れたらキャンセルUXの向上
🎮 ゲームや演出演出を予約 → 状況が変わったらキャンセル不要な処理の中止


👇ここにメッセージが表示されます👇
(まだ表示されていません)


🚫 実行をキャンセルする場合のコード例

以下は、setTimeout() を使って「3秒後に処理を実行する予約」を行い、すぐに clearTimeout() によってキャンセルする例です。

このコードでは 処理の実行がキャンセルされるため、何も起こりません。ボタンのキャンセル機能やタイマーのリセット処理などでよく使われるパターンです。


const timer = setTimeout(() => {
  console.log("3秒後に実行します!");
}, 3000);

// 実行をキャンセル
clearTimeout(timer);
  

🧪 実験:キャンセルボタンで止めてみよう

「スタート」→ 3秒後にメッセージ表示,「キャンセル」→ 実行を止める


<!-- 表示エリア -->
<div id="message">ここに表示されます</div>

<!-- ボタン -->
<button onclick="startTimer()">スタート</button>
<button onclick="cancelTimer()">キャンセル</button>

<!-- スクリプト -->
<script>
let timerId = null;

function startTimer() {
  const msg = document.getElementById("message");
  msg.textContent = "3秒後に表示されます...";
  timerId = setTimeout(() => {
    msg.textContent = "✅ メッセージが表示されました!";
  }, 3000);
}

function cancelTimer() {
  clearTimeout(timerId);
  const msg = document.getElementById("message");
  msg.textContent = "❌ キャンセルされました。";
}
</script>

🧩 clearTimeout の応用と設計のコツ

clearTimeout() は単なる「タイマーの停止」ではなく、ユーザーの操作状況に応じた柔軟なインタラクション設計に活用できます。たとえば、ユーザーがある行動を中断したときに、予定されていた処理を取り消すことで、不要な動作や誤動作を防ぐことができます。

キャンセルのタイミングは、ユーザーの体験を左右する重要な要素です。例えば setTimeout() で 3秒後に処理を予約していても、ユーザーがその直後に画面を切り替えた場合は clearTimeout() を使って処理を停止することで、予期せぬ表示やリソースの無駄遣いを防げます。

また、入力欄での遅延処理やインタラクション付きガイド(ツールチップ等)でも、次の操作が発生した瞬間に clearTimeout() を呼ぶことで、直感的で無駄のない動作を実現できます。これにより、ユーザーの行動により忠実なレスポンスが可能になります。

🔧 タイマー管理のベストプラクティス

複数のタイマーを扱う場面では、各 setTimeout() の戻り値をしっかり変数に格納し、必要に応じて clearTimeout() を呼び出す設計を徹底しましょう。これにより、タイマーの競合や無効な動作を防ぎやすくなります。

ユーザーの意図と処理の同期を取るには、clearTimeout() の正しい活用が欠かせません。状況に応じたキャンセル処理は、見えない部分でUXを支える重要なスキルのひとつです。