对于刚学JS的初学者(包括现在的我自己)来说,这个回调函数真的坑无数,所以想做一个淋过雨的人,想做为将来。刚入门的人带把伞。本文不会使用专业知识词汇,只会用口语给大家一个概念,帮助大家理解这个名词。如果你是JS的学生,刚遇到这个名词,你会一??头雾水。那么这篇文章会对你有所帮助,但如果你想研究更深层次的原理、用法和意义,这篇文章可能不适合你。话不多说,我们先看看MDN的解释。在这段话里,首先我们要明白一件事,什么是实参。我们都知道函数可以接受形参、形参和实参。那么什么是形式参数呢?相信你在无数的网站上看到过无数这样的例子,计算两个数的和,但并不影响它经典的简洁。那么你在定义这个函数的时候,A和B就是形参。参数可以使用也可以不使用。形参,形参,没有实际意义,只是为了帮你完成函数内部逻辑运算而设置的。那么什么是实参呢?还是这段代码,调用函数时,1和2是实参。对于刚入门的小伙伴,暂时不用深究,这么简单就可以理解。OK,那我们回过头来研究一下我们的题目内容:什么是回调函数。用人的话来说,如果一个函数A作为另一个函数B的参数,那么函数A就称为回调函数。是的,回调函数A是一个普通的函数,在B内部作为参数被其他函数B调用,那么此时A就可以调用B的回调函数了。回调函数的概念是相互的。单个函数不能称为回调函数,只能称为XXX(内部调用者)的回调函数。相信这里大多数人都是一头雾水。再举个栗子。我们经常在教程视频里听到这样的setTimeout函数的解释,setTImeout接收一个回调函数作为参数。。。确实,这句话对于刚开始学习这一步的我来说真的是一头雾水,什么是回调函数?我去,怎么以前没遇到过,是什么东西?别忘了setTimeout本身就是一个函数,也就是我们上面刚才说的函数B,那么函数A就是这个东西:所以这句话正确的语义应该是:setTimeout是一个函数B,它接收另一个函数A是用作它的参数。设计者想了想,这样说起来好像太麻烦了,就把函数A叫做回调函数。(函数A叫做函数B的回调函数!!!)本人也是第一次学习JS,仅代表个人观点。如有错误,希望大家多多指教,虚心指正。
