编程分为两类:系统编程和应用编程
系统编程–就是编写库;
应用编程–就是利用写好的各种库来编写居右某种功能的程序,也就是应用。
程序员会给自己写的库留下一些接口,即API(application programming interface,应用程序接口),以供应用程序使用。
在程序跑起来的时候,应用程序会通过API调用库里所预先备好的函数。但是有些库函数却需要应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的,后又被调用的函数称为回调函数。
js的回调简单的例子:
function fn(arg1 , arg2 , callback){
var num = Math.ceil(Math.random
(arg1-arg2)+arg2);
callback(num);
}
fn(10 , 20, function(num){
console.log(“Callback called ! Num : “+num);
})
下面为AJAX加载XML文件示例:
function fn(url, callback){
var httpRequest; //创建XHR
httpRequest = window.XMLHttpRequest ? new XMLHttpRequest() : //针对IE进行功能性检测
window.ActiveXObject ? new ActiveXObject(“Microsoft.XMLHTTP”) : undefined;
httpRequest.onreadystatechange = function(){
if(httpRequest.readystate === 4 && httpRequest.status === 200){ //状态判断
callback.call(httpRequest.responseXML);
}
};
httpRequest.open(“GET”, url);
httpRequest.send();
}
fn(“text.xml”, function(){
console.log(this);
});
console.log(“this will run before the above callback.”);
回调函数的传递:
.get(‘myhtmlpage.html′,myCallBack);//这是对的
.get(‘myhtmlpage.html’, myCallBack(‘foo’, ‘bar’));//这是错的,那么要带参数呢?
$.get(‘myhtmlpage.html’, function(){//带参数的使用函数表达式
myCallBack(‘foo’, ‘bar’);
});