我正在嘗試每隔1秒增加一個值(在本例中爲UNIX時間戳,但對於我們所關心的所有情況,它可能是任何舊整數),但它拒絕執行所以(它只是保持不變)。JavaScript變量不會增加間隔
下面的代碼
// given integer starting point
var tsmin=1332449260;
setInterval(function(){
tsmin=tsmin++;
console.info(ts);
}, 1000);
我正在嘗試每隔1秒增加一個值(在本例中爲UNIX時間戳,但對於我們所關心的所有情況,它可能是任何舊整數),但它拒絕執行所以(它只是保持不變)。JavaScript變量不會增加間隔
下面的代碼
// given integer starting point
var tsmin=1332449260;
setInterval(function(){
tsmin=tsmin++;
console.info(ts);
}, 1000);
問題出在++ tsmin和tsmin ++之間的區別。
++ tsmin在執行下一步之前遞增該值,而tsmin ++遞增該值後續字。如果您將該行更改爲:
tsmin = ++tsmin
它會工作,因爲它現在正在遞增,然後將其保存爲新值。然而,即使這個解決方案「工作」,你真正應該做的是:
tsmin++
沒有必要設置tsmin如果你只是增加這樣。
爲什麼你不只是做tsmin ++而不是使用tsmin的側面影響= tsmin ++?
聲明:
tsmin = tsmin++;
是保證讓 「tsmin」 在其相同價值永存。 運算符之後的變量表示該值的值爲之前的值的增量。的操作者=
結合不同於++
不太緊密,所以這個過程有:
setInterval(function(){
tsmin+=1;
console.info(tsmin);
}, 1000);
setInterval(function(){
tsmin=++tsmin;
console.info(tsmin);
}, 1000);
試試這個:
var tsmin = 1332449260;
setInterval(function() {
console.info(tsmin);
tsmin++;
}, 1000);
這假定你想要1332449260作爲第一個值在控制檯輸出,如果你想從1332449261開始移動console.info(tsmin);
之前的tsmin++;
。
非常感謝!明確的解釋,好的例子和建議最佳實踐啓動! – 2012-03-23 00:38:05