返回 NaN 的赋值运算符

Assignment operator returning NaN

我试图在使用 window.requestAnimationFrame() 时跟踪时间,但 += 运算符一直返回 NaN,即使我递增的值不是 NaN

var elapsedTime = 0
var lastTime = 0
var between = 500
var count = 0
var betweenCount = 0
function frame(time) {
    elapsedTime = time - lastTime
    console.log(elapsedTime)
    lastTime = time
    betweenCount += elapsedTime
    console.log(betweenCount)
    window.requestAnimationFrame(frame)
}

frame()

betweenCount 应该跟踪自上次重置以来经过的总时间,但一旦将 elapsedTime 分配给它,它就会变成 NaN,但此时经过的时间不是 NaN。

由于您第一次调用 frame() 时没有任何参数,time 在函数中将变为 undefinedelapsedTime 将变为 undefined - lastTime这是 NaN.

您需要为初始 frame() 调用提供有效参数,例如0.

只是因为你在调用函数时没有传递任何参数值,所以当时是undefined你尝试用+ operator升级值,+ operator工作数字,在您的情况下,您尝试增加一些值,因此它首先尝试将字符串转换为数字,然后突然抛出错误 NaN;

const a = 'string';
console.log(+a) ; // NaN