什么是回调函数?
当前回答
回调函数作为参数传递给另一个函数的函数。
function test_function(){
alert("Hello world");
}
setTimeout(test_function, 2000);
注意:在上面的示例中,test_function用作setTimeout函数的参数。
其他回答
我相信这种“回调”术语在很多地方被错误地使用了。我的定义大致如下:
回调函数是传递给某人并让他们在某个时间点称之为。
我认为人们只是读了维基定义的第一句话:
回调是对可执行代码的引用,或可执行代码,作为参数传递给其他代码。
我一直在使用很多API,看到了各种糟糕的例子。许多人倾向于将函数指针(对可执行代码的引用)或匿名函数(一段可执行代码)命名为“回调”,如果它们只是函数,为什么需要另一个名称?
实际上,wiki定义中只有第二句话揭示了回调函数和普通函数之间的区别:
这允许较低级别的软件层调用子程序(或函数)。
所以不同的是你将传递给谁,以及你传递的函数将如何被调用。如果您只是定义一个函数并将其传递给另一个函数,然后在该函数体中直接调用它,则不要调用回调。定义中说,传入的函数将由“较低级别”函数调用。
我希望人们能停止在模棱两可的语境中使用这个词,它不能帮助人们更好地理解,只能更糟。
回调函数作为参数传递给另一个函数的函数。
function test_function(){
alert("Hello world");
}
setTimeout(test_function, 2000);
注意:在上面的示例中,test_function用作setTimeout函数的参数。
外行的回答是,它不是由您调用的函数,而是由用户或浏览器在某个事件发生或某些代码处理后调用的函数。
CallAfter将是一个比callback这个愚蠢的名字更好的名字。当或如果某个函数满足条件,则调用另一个函数,即CallAfter函数,即作为参数接收的函数。
与其在函数中硬编码内部函数,不如编写一个函数来接受已经编写的CallAfter函数作为参数。可能会根据接收参数的函数中的代码检测到的状态更改来调用CallAfter。
这个问题的简单答案是回调函数是通过函数指针调用的函数。如果您将一个函数的指针(地址)作为参数传递给另一个函数,则当该指针用于调用它所指向的函数时,称为进行了回调