回调函数,我个人理解的是,将一个函数作为传递值传入另一个函数,在主函数执行完之后,再回过头来调用并执行的函数,叫做回调函数。
注意了,这里并不是指只要一个将函数作为传递值传入另一个函数就叫回调函数,回调着重的点在于“回过头来调用”。
如果你没有了解过异步的概念,这篇文章可能对你有所帮助。
比如下面这两段例子:
<script>
//定义主函数,回调函数作为参数
function A(callback) {
callback();
console.log('我是主函数');
}
//定义回调函数
function B() {
setTimeout("console.log('我是回调函数')",0);//即使此时时间设置为0,也会先输出主函数
}
//调用主函数,将B传进去
A(B);
</script>
第一个函数就是回调函数,第二个并不是,为什么?
因为第一个函数利用定时器(虽然设置的时间是0)把回调函数强行异步了,让回调函数在主函数执行完之后再执行,所以它叫做回调函数。
第二个执行逻辑就是先执行传递进来的函数,再执行主函数,所以不是回调函数。