返回 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
在函数中将变为 undefined
,elapsedTime
将变为 undefined - lastTime
这是 NaN
.
您需要为初始 frame()
调用提供有效参数,例如0
.
只是因为你在调用函数时没有传递任何参数值,所以当时是undefined
你尝试用+ operator
升级值,+ operator
工作数字,在您的情况下,您尝试增加一些值,因此它首先尝试将字符串转换为数字,然后突然抛出错误 NaN
;
const a = 'string';
console.log(+a) ; // 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
在函数中将变为 undefined
,elapsedTime
将变为 undefined - lastTime
这是 NaN
.
您需要为初始 frame()
调用提供有效参数,例如0
.
只是因为你在调用函数时没有传递任何参数值,所以当时是undefined
你尝试用+ operator
升级值,+ operator
工作数字,在您的情况下,您尝试增加一些值,因此它首先尝试将字符串转换为数字,然后突然抛出错误 NaN
;
const a = 'string';
console.log(+a) ; // NaN