requestAnimationFrame 是如何工作的?
How works requestAnimationFrame?
我是编程新手,面对这个功能:
function update(time = 0) {
console.log(time);
requestAnimationFrame(update);
};
update();
为什么我们在函数中声明参数 "time = 0" 但是当我们声明这个函数时不带参数呢?
requestAnimationFrame在什么时刻给变量time赋新值?
如果你想让一个time
变量累计为动画运行秒,你可以使用这个:
let time = 0;
function update() {
time++;
console.log(time);
requestAnimationFrame(update);
}
update();
下面是此代码的 JSFiddle demo 实例。
所有 requestAnimationFrame
所做的就是再次调用 update()
函数到 运行,因此 time++
会在每次 update()
函数时增加该值 运行秒。如果在 update()
函数中声明 time
变量,它永远不会递增,因为每次 update()
函数 运行s.
如果您想继续阅读 requestAnimationFrame
,可以查看此 documentation page。
希望这对您有所帮助:)
变量time
已经设置了默认值0。通常情况下,函数参数的默认值是undefined
,但是当用param=default_val
声明函数参数时, 如果在没有参数的情况下调用函数或者参数未定义,则参数将默认为 default_val
。参见 Javascript Default Function Parameters
。
传递给 requestAnimationFrame
的回调函数有一个参数,即它被调用的时间。
第一次调用 update
时的时间将为 0
,因为它没有作为参数传递给 requestAnimationFrame
。首次调用后,该函数将自身作为回调传递给 requestAnimationFrame
,然后将使用 time
参数调用 update
函数,因此不会将其设置为 0。
function update(time = 0) {
console.log('time:', time, 'elapsed time ms:', time-start);
if(time-start<=500){
requestAnimationFrame(update);
}
};
var start = performance.now();
update();
编写此代码的更好方法是使用 requestAnimationFrame
调用 update
而不是手动执行它。这样,第一次调用 update
函数时,它将具有正确的时间值,而不是 0(并且 update
函数不需要默认函数参数) .
function update(time) {
console.log(time);
requestAnimationFrame(update);
};
requestAnimationFrame(update);
我是编程新手,面对这个功能:
function update(time = 0) {
console.log(time);
requestAnimationFrame(update);
};
update();
为什么我们在函数中声明参数 "time = 0" 但是当我们声明这个函数时不带参数呢?
requestAnimationFrame在什么时刻给变量time赋新值?
如果你想让一个time
变量累计为动画运行秒,你可以使用这个:
let time = 0;
function update() {
time++;
console.log(time);
requestAnimationFrame(update);
}
update();
下面是此代码的 JSFiddle demo 实例。
所有 requestAnimationFrame
所做的就是再次调用 update()
函数到 运行,因此 time++
会在每次 update()
函数时增加该值 运行秒。如果在 update()
函数中声明 time
变量,它永远不会递增,因为每次 update()
函数 运行s.
如果您想继续阅读 requestAnimationFrame
,可以查看此 documentation page。
希望这对您有所帮助:)
变量time
已经设置了默认值0。通常情况下,函数参数的默认值是undefined
,但是当用param=default_val
声明函数参数时, 如果在没有参数的情况下调用函数或者参数未定义,则参数将默认为 default_val
。参见 Javascript Default Function Parameters
。
传递给 requestAnimationFrame
的回调函数有一个参数,即它被调用的时间。
第一次调用 update
时的时间将为 0
,因为它没有作为参数传递给 requestAnimationFrame
。首次调用后,该函数将自身作为回调传递给 requestAnimationFrame
,然后将使用 time
参数调用 update
函数,因此不会将其设置为 0。
function update(time = 0) {
console.log('time:', time, 'elapsed time ms:', time-start);
if(time-start<=500){
requestAnimationFrame(update);
}
};
var start = performance.now();
update();
编写此代码的更好方法是使用 requestAnimationFrame
调用 update
而不是手动执行它。这样,第一次调用 update
函数时,它将具有正确的时间值,而不是 0(并且 update
函数不需要默认函数参数) .
function update(time) {
console.log(time);
requestAnimationFrame(update);
};
requestAnimationFrame(update);