1.先看一个回调函数的基本实现:
回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调.
// 声明一个函数,它的参数是一个函数fn
function example(fn) {
// 回调前,可以do something
alert('我是回调前执行的代码');
// 存在fn则直接用,不存fn在则用函数表达式的方式声明一个
fn = fn || function() {};
fn(); // 调用传进来的fn
}
// 调用传进来的fn
function callback() {
alert('I am callback!')
}
example(callback); // 调用函数a
这个例子展示回调函数基本实现方法,实现回调的关键是把一个函数当成另一个参数。当然实践中很少用上面方式去使用回调函数,一般把一个匿名函数传入当成回调函数,这种方法在Javascript中使用非常广泛,下面是一个基本的例子。
// 声明一个函数,它的参数是一个函数fn
function example(fn) {
// 回调前,可以do something
alert('我是回调前执行的代码');
// 存在fn则直接用,不存fn在则用函数表达式的方式声明一个
fn = fn || function() {};
fn(); // 调用传进来的fn
}
// 把匿名函数当做参数
example(function() {
alert('I am callback!')
});
使用匿名函数作为参数,不仅可以极少代码,也让代码更好管理,更加灵活。
任何函数都是可以传入参数的,回调函数一样:
// 声明一个函数,它的参数是一个函数fn
function example(a, fn) {
// 回调前,可以do something
alert(a);
// 存在fn则直接用,不存fn在则用函数表达式的方式声明一个
fn = fn || function() {};
fn(m); // 调用传进来的fn
}
// 把匿名函数当做参数
var m = 'I am callback!';
example('我是回调前执行的