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