js中回调函数总结
函数也是对象,可以理解为字符串序列化的对象
普通的定义函数,先定义变量,再指向一个函数
var foo=function(arg1,arg2){
return arg1+arg2;
}
console.log(foo(2,3));//执行后结果输出为5
我们也可以写成另外一种形式,构建一个Function对象
var foo=new Function("arg1","arg2","return arg1+arg2;");或var foo=Function("arg1","arg2","return arg1+arg2;");
console.log(foo(2,3));//执行后结果输出也为5
回调函数就是把函数作为一个参数对象传递给另外的函数调用
基本方法:
function callbackFoo(){
console.log("this is callback");
}
function foo(callback){
console.log("this is foo");
callback();
}
foo(callbackFoo);
######log 输出#######
this is foo
this is callback
#####################
匿名函数方法:
function foo(callback){
console.log("this is foo");
callback();
}
foo(function(){console.log("this is callback");});
######log 输出#######
this is foo
this is callback
#####################
带参数的回调函数:
方法1:
function callbackFoo(n){
console.log("this is callback,arg is:"+n);
}
function foo(arg,callback){
console.log("this is foo");
callback(arg);
}
foo(1,callbackFoo);
######log 输出#######
this is foo
this is callback,arg is:1
#####################
方法2:
function callbackFoo(n){
console.log("this is callback,arg is:"+n);
}
function foo(callback){
console.log("this is foo");
callback();
}
foo(function(){callbackFoo(2);});
######log 输出#######
this is foo
this is callback,arg is:2
#####################
以上举例回调函数都是同步调用,在JS中,还可以作为异步调用,例如利用ajax访问页面的异步处理。