Javascript变量不会在间隔上递增

时间:2012-03-23 00:12:23

标签: javascript setinterval unix-timestamp

我试图每1秒递增一个值(在这种情况下是一个UNIX时间戳,但对于我们所关心的所有情况,它可能也是任何旧的整数),但它拒绝这样做(它只是保持相同)。

这是代码

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

5 个答案:

答案 0 :(得分:3)

声明:

tsmin = tsmin++;
保证

永远保持“tsmin”的值。 {/ 1}}运算符变量之后意味着该表达式的值是之前的值增量。 ++运算符绑定的次数不如=,因此其处理过程为:

  1. 获取“tsmin”
  2. 的值
  3. 增加“tsmin”
  4. 将“tsmin”设置为步骤1中的值。

答案 1 :(得分:3)

问题来自++ tsmin和tsmin ++之间的区别。

++ tsmin在执行下一步之前递增该值,而tsmin ++在值之后递增该值。如果您将行更改为:

tsmin = ++tsmin

它可以工作,因为它现在在将其保存为新值之前递增。然而,即使这个解决方案“有效”,你真正应该做的是:

tsmin++

如果你只是这样递增,就没有必要设置tsmin。

答案 2 :(得分:2)

为什么不用tsmin ++而不是使用tsmin = tsmin ++的副作用?

答案 3 :(得分:0)

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


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

答案 4 :(得分:0)

试试这个:

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

这假设您希望在控制台中输出1332449260作为第一个值,如果您想从1332449261开始,请在tsmin++;之前移动console.info(tsmin);