一句话:回调函数就是“用户自定义的处理方法函数”。
要理解回调函数,首先要知道回调函数的使用场景。下面引用知乎上的讲解:
编程分为两类:系统编程(system programming)和应用编程(application
programming)。所谓系统编程,简单来说,就是编写库;而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用。系统程序员会给自己写的库留下一些接口,即API(application programming interface,应用编程接口),以供应用程序员使用。所以在抽象层的图示里,库位于应用的底下。当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。 打个比方,有一家旅馆提供叫醒服务,但是要求旅客自己决定叫醒的方法。可以是打客房电话,也可以是派服务员去敲门,睡得死怕耽误事的,还可以要求往自己头上浇盆水。这里,“叫醒”这个行为是旅馆提供的,相当于库函数,但是叫醒的方式是由旅客决定并告诉旅馆的,也就是回调函数。而旅客告诉旅馆怎么叫醒自己的动作,也就是把回调函数传入库函数的动作,称为登记回调函数(to register a callback function)。
作者:no.body
链接:https://www.zhihu.com/question/19801131/answer/27459821 来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
由此我们可以知道,回调函数是由于API无法保证把所有的情景的处理函数预先备好,于是留出来给程序员自由发挥的处理函数,而由于不能让应用编程人员去改写底层,于是将处理函数通过一个叫登记回调函数的操作与某个事件绑定起来,绑定的时候回调函数是没有运行的,只有当某个事件触发了,才会回过头来调用“回调函数”去处理,我认为这就是为什么叫回调函数。
结论:回调函数本质就是一个处理函数,该函数是用户自定义的处理方法,只不过是用系统提供的API与某一事件先绑定,后随着某一事件的触发才回过头去调用。