function(callback){
// 代码
// 以上代码执行完毕后执行回调函数
if(typeof callback === "function"){
callback()
}
}
这是因为js中函数可以当做参数直接传递进去。
回调函数可以继续扩展一个函数的功能,可以是程序非常灵活。比如:
function showDiv(callback){
$("#div1").show()
callback($("#div1"))
}
showDiv(function($div){
$div.text("hello world")
})
//原本showDiv的功能就是现实一个div,加了callback函数当参数后就可以在执行完show之后改变div中的文字。
一般来说,callback函数用在异步中的例子比较多,因为在异步调用中,只能通过回调函数继续执行某个动作。
例如:
function myThread(callback){
return setTimeout(1000*10,function(){
$("#div").append("<p>hello</p>")//10秒后在div中加一个行,然后在执行callback函数
callback()
})
}
初次接触回调函数的时候,总是一直纳闷什么是回调函数,首先我们先弄清楚什么是回调函数?
在弄懂回调函数的之前我们要先弄懂什么是高阶函数:所谓高阶函数, 就是值函数的一个参数是函数(这个参数就是回调函数) , 或者函数的返回值是函数 , 满足这两个的其中一个 就是 高阶函数
首先我们可以通过一组案例实现:
//然后定义一个myFor(可以随便定义)函数,这个函数需要传两个参数:数组,回调函数。注意这里的myFore就是我们后期如果定义回调函数的一个方法名,图中的callback的意思就是回调函数所在的位置,只不过我们平常都习惯用callback这个名义去定义回调函数,参数名不固定。
这里我们通过一个例子去实现我们是如何调用回调函数的:
最后的答案是: