
题主把回调函数想的太复杂了,在这里强调一下:
回调函数和普通函数没有本质区别,没有本质区别,没有本质区别。回调函数谁都可以用。
首先让我们来看看普通的函数调用,假设我们在A函数中调用函数func:
想一想,你怎么知道可以调用func呢?哦,原来func是你自己定义的:
这很简单吧,现在假设你编写的这段代码无比之牛逼,全世界的程序员都无比疯狂的想引入到自己的项目中,这时你会把A函数编写成一个库供全世界的码农使用。
但此时所有人都发现一个问题,那就是在A函数中他们都想执行一段自己的代码,作为这个库的创作者你可能会这样实现:
假设全世界有一千万码农,那你是不是要有一千万个if else。。。想想这样的代码就很刺激有没有!
更好的办法是什么呢?把函数也当做变量!你可以这样定义A函数:
任何一个码农在调用你的A函数时传入一个函数变量,A函数在合适的时机调用你传入的函数变量,从而节省了一千万行代码。
为了让这个过程更加难懂一些,这个函数变量起了一个无比难懂的称呼:回调函数。
现在你应该明白了吧,回调函数和普通函数没有任何本质区别谁都可以用。
这里没啥原理不原理,从这个角度看这个问题更像是在问函数的实现原理,关于这一话题你可以参考这篇文章:
关于回调函数更详细的讲解你可以参考这篇:
最后,如果你对这种讲解风格感兴趣,那么我在知乎上写的很多这类文章你一定不能错过,有很多知乎朋友问有没有pdf版本,现在我也整理出来了,绘图非常精美,免费分享给大家。
最后也是最重要的,觉的有帮助的话给 @码农的荒岛求生 点个赞再走呗~
