试图 运行 一个循环恰好一秒钟,但循环 运行 是无限的。为什么?

Trying to run a loop for exactly one second, but the loop runs infinitely. why?

我在 1 秒后更改 'aa' 的值,但循环继续执行。

let aa = true;

setTimeout(function () {
  aa = false;
}, 1000);

for (; aa; ) {
  console.log('aaa');
}

setTimeoutasynchronous,所以只有在for循环当前代码执行完成后才会执行。在你的情况下,它会变得无限。

一旦for循环开始执行,它将留在调用堆栈中直到完成。因为你没有给出任何条件所以它不会停止

由于其他人解释的原因,您的方法不起作用。您可以改用这样的东西:

var started = Date.now();
while(Date.now() - started < 1000) {
  console.log("aaa");
};