js回调函数
最近在学习中,常常遇到一个名词:回调函数。不是很理解,便去网上搜查资料,仔细的学习。发现,实际上,我们经常会用到回调函数。今天就把学习内容大致整理下,大家共同学习。
概述:在javaScript中,回调函数的定义为:函数A作为参数传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。
回调函数的使用场合:
首先看几个经典的例子(你一定用过它们)
$.get('ajax/test.html',function(data){
$('.result').html(data);
alert("Load was performed.")
});//异步请求的回调函数
$("#target").click(function(){
alert("Handler for .click() called.");
});//点击事件的回调函数
this.tabs.forEach(function(tab,index){
if(tab.selected){
this.focustab=this.tabs[index];
}
}.bind(this));//数组中遍历每一项调用的回调函数
- 异步执行(例如读文件,发送HTTP请求)
- 事件监听和处理
- 设置超时和时间间隔的方法
回调函数传递参数的方法:
1.将回调函数的参数作为与回调函数同等级的参数传入
eg:
function say(value){
alert(value);
}
function execute(someFunction,value){
someFunction(value);
}
execute(say,'hi,js');
2.回调函数的参数在调用回调函数的内部创建
function say(value) {
alert(value);
}
function execute(someFunction) {
var value = {
name: 'hello'
};
someFunction(value);
}
execute(say);
回调函数的作用
例如:一般来说Ajax最大的一个回调函数就是onreadystatechange,这个应该成为事件,每次XMLHttpRequest这个Object在URL请求,状态改变的时候就会触发这个事件。那么你用onreadystatechange=一个函数,这样让你的函数在XMLHttpRequest state change 的时候可以及时捕捉到。当然就不用setTimeout来捕捉啦。所以会方便,在你的回调函数里面可以检测Ajax对象的值,包括返回的请求的HTML,当然只有在readyState=4的时候而且status=200的时候才能用。status就是HTML状态,有200,400,500之类的。
总之,回调函数就是一个自定义的函数,在发生特定的事件的时候调用来处理这个事件的函数。