Переменная Javascript не увеличивается в течение интервала - PullRequest
2 голосов
/ 23 марта 2012

Я пытаюсь увеличивать значение (в данном случае временную метку UNIX, но, как ни крути, в этом случае это может быть любое старое целое число) каждую 1 секунду, но оно отказывается это делать (оно просто остаетсятоже самое).

Вот код

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

Ответы [ 5 ]

3 голосов
/ 23 марта 2012

Проблема заключается в разнице между ++ tsmin и tsmin ++.

++ tsmin увеличивает значение перед выполнением следующего шага, тогда как tsmin ++ увеличивает значение afterwords.Если вы изменили строку на:

tsmin = ++tsmin

, она будет работать, потому что теперь она увеличивается, прежде чем сохранить ее как новое значение.Однако, хотя это решение «работает», вам действительно нужно:

tsmin++

Нет необходимости устанавливать tsmin, если вы просто увеличиваете таким образом.

3 голосов
/ 23 марта 2012

Утверждение:

tsmin = tsmin++;

гарантированно сохранит "tsmin" на одном и том же значении навсегда.Оператор ++ после переменной означает, что значением этого выражения является значение до приращения.Оператор = связывается менее плотно, чем ++, поэтому процесс там:

  1. получает значение "tsmin"
  2. , приращение "tsmin"
  3. установите "tsmin" в значение из шага 1.
2 голосов
/ 23 марта 2012

Почему бы вам просто не использовать tsmin ++ вместо использования побочного эффекта tsmin = tsmin ++?

0 голосов
/ 23 марта 2012

Попробуйте:

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

Предполагается, что вы хотите, чтобы 1332449260 выводилось на консоль как первое значение, если вы хотите начать с 1332449261, переместите tsmin++; перед console.info(tsmin);.

0 голосов
/ 23 марта 2012
    setInterval(function(){
   tsmin+=1;
   console.info(tsmin);
}, 1000);


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