Как получить доступ к глобальной переменной после функции setInterval.переменные дают неопределенные или NaN даже после того, как они установлены - PullRequest
0 голосов
/ 17 декабря 2018

Это класс машинописного текста.Я пытаюсь получить доступ к времени начала и подсчета в функции setInterval.Я установил значения раньше, почему мы получаем неопределенные и NaN в нем?и как мне решить эту проблему?

startTimer() {
 this.startTime = new Date();
 this.count = 100;
 console.log("STARTTIME: " + this.startTime); //RESULT: Mon Dec 17..etc
 console.log("COUNT: " + this.count); //RESULT: 100
    this.timer = setInterval(function () {
      console.log("STARTTIME: " + this.startTime); //Undefined
      this.count += 1;
      console.log("COUNT: " + this.count); //NaN
     }, 1000);
 }

1 Ответ

0 голосов
/ 17 декабря 2018

Попробуйте использовать жирная стрелка вместо функции

(из документов)

this традиционно является болезненной точкой в ​​JavaScript.Как однажды сказал мудрый человек, «я ненавижу JavaScript, так как он слишком легко теряет значение this».Толстые стрелки исправляют это, захватывая значение этого из окружающего контекста.

Поэтому используйте его так:

setInterval(() => {  // <-----
  console.log("STARTTIME: " + this.startTime); 
  this.count += 1;
  console.log("COUNT: " + this.count); 
}, 1000);

Stackblitz

...