2012-03-23 183 views
2

我正在嘗試每隔1秒增加一個值(在本例中爲UNIX時間戳,但對於我們所關心的所有情況,它可能是任何舊整數),但它拒絕執行所以(它只是保持不變)。JavaScript變量不會增加間隔

下面的代碼

// 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

非常感謝!明確的解釋,好的例子和建議最佳實踐啓動! – 2012-03-23 00:38:05

2

爲什麼你不只是做tsmin ++而不是使用tsmin的側面影響= tsmin ++?

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);​ 

這假定你想要1332449260作爲第一個值在控制檯輸出,如果你想從1332449261開始移動console.info(tsmin);之前的tsmin++;