回调函数就是传递一个可作为参数的函数,该函数作为一个参数传到另一个主函数中,当这个主函数执行完之后,再执行作为参数的函数,这个参数化函数就是一个回调函数。
通过指针来调用函数。我们常用的定时器setTimeOut()和setInterval()都是回调函数。
<script>
function callBack(value){
console.log(value);
}
function main(callBack,value){
console.log("我是主函数");
callBack(value); //结果是“我是回调函数”
}
main(callBack,"我是回调函数");//将回调函数的参数作为与回调函数同等级的参数进行传递
</script>
调用的是main函数,意味着先调用main函数,输出“我是主函数” 在main函数中,callBack作为一个参数传递过来 ,这个参数也就是callBack()函数所需要的,先调用的main()函数,得到了value的值,再调用callBack()函数时,输出的value值也就是已获得的“我是主函数”。
传参问题
回调函数的参数也可以在调用回调函数内部创建
<script>
function callBack(value) {
console.log(value);
}
function main(someFunction) {
var value = myFunction(); //接收到name的值了
function myFunction(name){ //具有实参的myFunction函数获取了name值
return "hello javaScript"
}
someFunction(value); //someFunction()也是一个回调函数
}
main(callBack);
</script>
更简单一点
main函数只接收一个参数,也就是callBack函数本身callBack()函数的参数在main()函数内部已经定义过了,callBack()函数是回调函数
<script>
function callBack(value) {
console.log(value.name);
}
function main(someFunction) {
var value = {
name: "hello javaScript"
}
someFunction(value);
}
main(callBack);
</script>
补充:回调函数是异步编程的一种形式,进程不需要一直等下去,而是继续执行下面的操作,不用管其他进程的状态。当有信息返回时,系统会通知进程进行处理,这样可以提高执行的效率。