ここにいくつかのサンプルコードへのリンクがあります。
テストを開始するまで、aの戻り値はsetTimeout()ある種のブラウザオブジェクトであると想定していました。
実際、それは単純な整数のようです。また、の戻り値をグローバル変数に割り当てると、そのsetTimeoutようなオブジェクトは1つしか存在できないことを意味すると思いました。ただし、[タイマーの開始]ボタンを複数クリックするとわかるように、複数のタイマーが同時に実行されている可能性があります。
例えば
- スタートボタンをクリックします
- スクリプトはタイムアウトを作成します
- それは
timeout 1、5秒で発砲するためです - 1秒後、もう一度クリックすると、
timeout 2 - 今、私は4秒と5秒で
timeout 1火事になりましたtimeout 2 - 停止ボタンをクリックすると、
timeout 2クリアされるだけです
複数のタイマーを作成するユーザークリックの問題は、設定する前に常に現在のタイムアウト変数をクリアすることで解決できます。しかし、私はJavascriptが実際にここで何をしているのかを本当に理解したいと思います。