回调函数定义: 回调函数作为参数传递给另一个函数,并在父函数完成后执行。
第一句的理解:函数名(函数对象)可以把它当成形参传给需要回调函数的函数,加上()之后就会执行此函数。
第二句的理解:回调函数在父函数里面当然会在父函数执行完后再执行,这样函数的执行就存在了前后的依赖关系,所以当有些方法执行需要前提条件的时候,这些方法就可以写成回调函数。
为什么要用回调函数?
因为回调函数是作为形参在父函数上存在的,所以可以通过传不同的实参(不同的函数名),来实现不同的功能,非常灵活。
而且它会在父函数完成后执行,所以它和父函数有一种前后的依赖关系,所以回调函数多用在异步进程里面,例如:ajax请求,动态加载资源,定时器等,当然组件的事件很多也都需要回调函数的支持,是因为事件存在前后的依赖关系。
例子:
// 回调函数
function callFn(a, b) {
// dosomething
console.log(a + "---" + b)
}
// 主函数 通过主函数传函数名和参数
function mainFn(callback, options) {
var abc = "someStr";//第一种传参方式:把主函数内部数据往回调函数里传
callback(abc, options);
}
// 调用回调函数
mainFn(callFn, 'otherStr');//第二种传参方式:把函数名和参数一起往主函数里传
// 匿名的回调函数 其实就是把函数名换成了具体的函数,这样看起来其实很多地方都用到了回调函数,例如:ajax,事件,forEach等
// 主函数
function mainFn(callback, options) {
var abc = "someStr";
callback(abc, options);
}
// 调用回调函数
mainFn(function callFn(a, b) {
// dosomething
console.log(a + "---" + b)
}, 'otherStr');