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

gon*_*rek 1 javascript

我有js文件,我在使用requestAnimationFrame().我知道这个论点应该是回调函数.我认为我的论点是回调函数,但错误出现在js控制台中:

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

file.js:

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

function fun(word){
    if (word === 'tree'){
        screen()
    }
window.requestAnimationFrame(fun("tree"));
Run Code Online (Sandbox Code Playgroud)

一切都很好.我在我的大项目中使用它,一切都按照我的意愿工作,但我不知道为什么我在js控制台中有错误

Ser*_*nko 5

你将执行fun函数的结果传递给了requestAnimationFrame,这就是你得到错误的原因(因为它返回一个未定义的).

正确的方法:

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

function fun(word){
    if (word === 'tree'){
        screen()
    }
}
window.requestAnimationFrame(fun.bind(window, "tree"));
Run Code Online (Sandbox Code Playgroud)

有关bind您的更多信息,请参阅文档.