Javascript 回调函数作为window.requestAnimationFrame()的参数

Javascript 回调函数作为window.requestAnimationFrame()的参数,javascript,Javascript,我使用requestAnimationFrame()的js文件。我知道参数应该是回调函数。我认为我的参数是回调函数,但js控制台出现错误: TypeError:Window.requestAnimationFrame的参数1不是 反对 file.js: function screen(){ console.log("it works!") } function fun(word){ if (word === 'tree'){ screen() } wi

我使用requestAnimationFrame()的js文件。我知道参数应该是回调函数。我认为我的参数是回调函数,但js控制台出现错误:

TypeError:Window.requestAnimationFrame的参数1不是 反对

file.js:

function screen(){
     console.log("it works!")
}

function fun(word){
    if (word === 'tree'){
        screen()
    }
window.requestAnimationFrame(fun("tree"));

一切都很好。我在我的大型项目中使用它,一切都按我所希望的方式工作,但我不知道为什么我在js控制台中出现错误

您将执行
fun
函数的结果传递给
requestAnimationFrame
,这就是为什么会出现错误(因为它返回未定义的结果)

正确的方法是:

function screen(){
     console.log("it works!")
}

function fun(word){
    if (word === 'tree'){
        screen()
    }
}
window.requestAnimationFrame(fun.bind(window, "tree"));

有关
bind
的更多信息,请参见。

您将执行
fun
函数的结果传递给
requestAnimationFrame
,这就是为什么会出现错误(因为它返回未定义的值)

正确的方法是:

function screen(){
     console.log("it works!")
}

function fun(word){
    if (word === 'tree'){
        screen()
    }
}
window.requestAnimationFrame(fun.bind(window, "tree"));

您可以在中找到有关绑定的更多信息。

处理此类事情的常用方法是将对
fun(“tree”)
的调用封装在匿名函数中,该函数成为requestAnimationFrame可以使用的回调:

function screen(){
     console.log("it works!")
}

function fun(word){
    if (word === 'tree'){
        screen()
    }
}
window.requestAnimationFrame(function () { fun("tree"); });
这与您的代码不同,因为您传递的是使用参数“tree”调用
fun
函数的结果。As
fun
不会返回任何未定义的结果。好像是你干的

var x = fun("tree"); // x is undefined
window.requestAnimationFrame(x);

处理这类事情的一种常见方法是将对
fun(“tree”)
的调用封装在一个匿名函数中,该函数成为requestAnimationFrame可以使用的回调:

function screen(){
     console.log("it works!")
}

function fun(word){
    if (word === 'tree'){
        screen()
    }
}
window.requestAnimationFrame(function () { fun("tree"); });
这与您的代码不同,因为您传递的是使用参数“tree”调用
fun
函数的结果。As
fun
不会返回任何未定义的结果。好像是你干的

var x = fun("tree"); // x is undefined
window.requestAnimationFrame(x);

我同意这一点。此函数的语法为window.requestAnimationFrame(回调);您应该只在此处提及函数名,或者根据函数体使用上文所述的绑定(它们检查参数值,然后调用
screen
函数)作者可能正在寻找绑定,因为param的just pass函数将不应用于它的逻辑。应该是window.requestAnimationFrame.bind(fun(“tree”)); 谢谢你的帮助!:)我同意这一点。此函数的语法为window.requestAnimationFrame(回调);您应该只在此处提及函数名,或者根据函数体使用上文所述的绑定(它们检查参数值,然后调用
screen
函数)作者可能正在寻找绑定,因为param的just pass函数将不应用于它的逻辑。应该是window.requestAnimationFrame.bind(fun(“tree”)); 谢谢你的帮助!:)这不是使用
requestAnimationframe()
的方式,如果您使用
javascript
而不是
css
来制作动画,则可以使用
requestAnimationframe()
来确保动画顺利运行,并且它应该位于
函数fun()和对
函数fun()的调用中
应该在函数声明之后,您使用此函数的目的是什么?这不是使用
requestAnimationframe()的方式
如果您使用
javascript
而不是
css
制作动画,它用于确保动画顺利运行,并且它应该位于
函数fun()
中,调用
函数fun()
应该在函数声明之后,您使用此函数的目的是什么?