对于刚学 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,仅代表集体意见,如有谬误,还望各位大佬指教,我定虚心改过。