2016-11-29 5 views
0
var id_of_setinterval = setInterval(function(){}, 2000) 

if(id_of_setinterval) { 
    clearInterval(id_of_setinterval); 
    id_of_setinterval = null; //Does it necessary? Why? 
} 

このコードが書かれた理由は本当にわかりません。clearInterval(id_of_setinterval)の後にid_of_setinterval変数をnullに設定する必要がありますか?

私の意見では、id_of_setintervalをnullに設定すると、は不要です。です。

+1

いいえ、それは絶対に必要ではありません。 – Pointy

+0

また、有害な(番号からオブジェクトへのタイプの変更) – Brian

+0

これは、インターバルが現在実行中かどうかを判断するパターンのように聞こえます。 'id_of_setinterval'がnullでない場合、その区間は実行されています。それ以外の場合はそうではありません。ここには示されていないコードの他の部分は、この情報を何とか使用することができます。 – apsillers

答えて

0

です。複数のタイマーを使用して起動し、いくつかのタイマーを終了すると

が、それはそれはsetIntervalから、タイマーのIDのみを保持するので、それをゼロに設定した方がよい:

ザ・はtimeoutIDを返さsetInterval();への呼び出しによって作成されたタイマーを識別するゼロでない数値です。タイムアウトをキャンセルするには、この値をWindow.clearInterval()に渡すことができます。

そしてclearInterval

によるとそれはあなたが技術的には交換可能clearInterval()clearTimeout()を使用できることを意味しており、setInterval()setTimeout()で使用されるIDのプールが共有されていることは注目に値します。しかし、分かりやすくするため、そうしないようにしてください。

1つのタイマーと1つの変数だけを使用する場合は、idをゼロに設定する必要はありません。

+0

しかし、 'timeoutID'を周りに置いておくとどんな害がありますか?クリアされた 'timeoutID'を指定して' clear' *を呼び出すことは何もしません。 –

+0

これはプールからのIDです。 IDは別の目的のために再度使用されている可能性があります。 –