2012-03-23 13 views
2

値を増やそうとしていますが(この場合はUNIXのタイムスタンプですが、この場合は気になりますが古い整数かもしれません)、1秒ごとに増分しますが、そう(それは同じままです)。Javascript変数が間隔を超えてインクリメントしない

ここであなただけの側がtsmin = tsmin ++の影響を使用してtsmin ++の代わりをしないのはなぜコード

// given integer starting point 
var tsmin=1332449260; 
setInterval(function(){ 
    tsmin=tsmin++; 
    console.info(ts); 
}, 1000); 

答えて

3

問題は++ tsminとtsmin ++の違いに由来します。

++ tsminは次のステップを実行する前に値をインクリメントしますが、tsmin ++は後で値をインクリメントします。あなたが行を変更した場合:

tsmin = ++tsmin 

それが今、新たな価値としてそれを保存する前にインクリメントされているので、それは、働くだろう。しかし、この解決策は「作品」にも関わらず、何が本当にやるべきことは次のとおりです。

tsmin++ 

あなたはちょうどそのよう増加している場合tsmin設定する必要はありません。

+0

ありがとうございました!明確な説明、良い例、ベストプラクティスのアドバイスによる起動! –

3

声明:

tsmin = tsmin++; 

は永遠にその同じ値に "tsmin" を保つことが保証されています。 ++演算子の後の変数は、その式の値がの前に、の前の値であることを意味します。

  1. は、ステップ1
  2. から値をインクリメント「tsmin」
  3. セット「tsmin」
  4. 「tsmin」の値を取得する:プロセスがあるので、=オペレータは、あまりしっかり++以上に結合します
0
setInterval(function(){ 
    tsmin+=1; 
    console.info(tsmin); 
}, 1000); 


setInterval(function(){ 
    tsmin=++tsmin; 
    console.info(tsmin); 
}, 1000); 
0

これを試してみてください:

var tsmin = 1332449260; 
setInterval(function() { 
    console.info(tsmin); 
    tsmin++; 
}, 1000);​ 

これは、1332449261から起動したい場合は、console.info(tsmin);の前にtsmin++;を移動したい場合、最初の値としてコンソールに1332449260を出力することを前提としています。

関連する問題