.getTime() 是如何工作的?

How does .getTime() work?

为什么这个语句有效?我试图以每秒 20-25 帧的速度更新我的屏幕。我明白为什么会这样 我只是不明白它是如何工作的。如果我们采用 new Date().getTime() - lastLoopRun,为什么每次结果都不为零,因为 lastLoopRun 等于 new Date().getTime()?我知道这与变量从 0 开始这一事实有关,但这对我来说意义不大。

var lastLoopRun = 0;
function loop() {
        if (new Date().getTime() - lastLoopRun > 40) {
            handleControls(); 
            showSPrites();

            lastLoopRun = new Date().getTime();
        }
        setTimeout('loop();', 2);
    }

勾选lastLoopRun时,还没有更新到当前时间

因此在循环开始时,它仍然具有前一个循环的旧值,或者 0。

如果在循环开始时更新,就像你说的,它永远是0。

new Date().getTime() returns 1970 年 1 月 1 日 00:00:00 UTC 与当前时间之间经过的毫秒数。所以每1秒增加1000

function loop() { ...; setTimeout('loop();', 2);} 每 2 毫秒调用 loop()

   loop() -> elapsed about 40 ms after previous action? -> after 2 ms 
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms 
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms 
-> loop() -> OK! elapsed -> do action -> update timestamp -> after 2 ms
-> loop() -> elapsed about 40 ms after previous action? -> after 2 ms 
-> ...