全局变量没有更新

Global variables aren't updating

我为此困惑了一两天。我正在尝试创建一个计时器,并且已经提取了一些代码。我不明白为什么当我记录变量 minutesseconds 时,值仍然为 0。尽管变量是全局变量。非常感谢!

let totalTime = 0;
let minutes = Math.floor(totalTime / 60);
let seconds = totalTime % 60;

function countTime() {
    return totalTime += 1; 
 }

 function startCount() {
    countInt = setInterval(countTime, 1000);
  }

startCount()

console.log(seconds); // Why does the output stay 0? 

我会这样做:

var totalTime = 0;
var minutes, seconds;

function startTimer(){
    let countInt = setInterval(() => {
        totalTime++;
    }, 1000);
}

function updateTimeData(){
    minutes = Math.floor(totalTime / 60);
    seconds = totalTime % 60;
}

startTimer();

setTimeout(() => {
    updateTimeData();

    console.log(seconds);
}, 5000);

如果您想获得正确的结果,setTimeout 是必需的。 JavaScript 是异步的,因此代码中的 console.log 会立即被调用,不会等待 setInterval(因为它在 setInterval 函数之外)。

如果您不知道:
setTimeout 的工作原理与 setInterval 类似,但只调用一次

在您的代码中 countTime() 仅在 1 秒后运行,但 console.log 立即 运行。

试试这个:

let totalTime = 0;
let minutes = Math.floor(totalTime / 60);
let seconds = totalTime % 60;

function countTime() {
    // This will run every second
    totalTime += 1;
    minutes = Math.floor(totalTime / 60);
    seconds = totalTime % 60;
    console.log(minutes, seconds); // here you log after it has been updated.
 }

 function startCount() {
    countInt = setInterval(countTime, 1000);
  }

startCount()