2012-03-23 116 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++;