我正在尝试每隔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