回调函数 : 函数作为参数传递到另外一个函数中。简单数据类型和引入数据类型中的数组和对象作为参数传递大家肯定都不陌生,其实引用数据类型中的函数也是可以的。事实上大家见到的很多,用到的也很多,比如jQuery中的一些事件,定时器。这些呢都是别人搞好的,大家直接用,所以就没有太在意。/注意到click方法中是一个函数而不是一个变量//它就是回调函数$("#btn_1").click(function() { ?alert("Btn 1 Clicked");}); 它也是回调函数setInterval(function(){console.log(‘回调函数‘)})回调函数是如何运作的呢?我们把一个函数传入,那么这个函数什么时候执行,执行的条件是什么?这个是由被调用的函数决定的,被调用函数可以在一个适当的条件去触发这个回调函数,比如上诉点击事件,什么时候触发这个函数呢?那就是点击的时候,其实jQuery封装的时候,也可以函数调用的时候立马执行,也可以把传入的函数放入定时器,间隔一段事件执行,那么这些毫无意义嘛!!!总之就是传入的这个函数执行条件,时间,同步或异步都可以随意控制,很强大。
回调函数其实也是闭包:
如何理解这个呢? ?当我们把这个函数当参数传递到其他函数时候,那么其实会形成闭包的。大家想想闭包的概念,内部函数应用外包函数变量。当然其实传入的函数也不一定非要应用外部函数的变量。
function fn(id, check) {
info = {
id: id
}
console.log(id)
check(info)
}
???????fn(1, function(data) {
???????????console.log(data)
???????})
上面是我写的一个简单的回调函数,当然没有任何意义啊,只是写出来便于看的,
fn函数带用的时候传入一个函数,这个函数调用时候,其实有一个传值问题,大家应该可以看出来吧,其实很多时候,我们是可以利用回调函数传值的,
1传到上诉fn函数中,fn函数中的info同时也传到了fn调用中的data
js中的回调函数
原文地址:https://www.cnblogs.com/tiangeng/p/10174579.html