函数可以作为一个参数在另一个函数中被调用。
由于主程序在执行代码时,遇到文件读取的程序,需要进行较为麻烦的IO操作,所以函数、程序在执行过程中遇到IO操作就不会执行下去,而是跳过该程序,因此在这期间执行的操作和结果我们是得不到的。
这样的行为还包括:定时器、网络连接、读取网络流数据、文件读写、Ajax提交、请求数据库服务等
var a=0
function seta(time){
setTimeout(function () {
a=10;
},time);
}
console.log(a);
seta(3000);
console.log(a);
//返回0 0
虽然timer让a=10,但是JS不会等定时器结束再跳出函数,而是马上执行下一个语句console.log(a),此时a没有变,还是0。
我们为了能得到a的值,引入callback
将callback这个函数以参数的形式传入函数中
正常函数传参是由外到内,将参数传入到函数中,但是callback相反,它将函数的中的某些值,由内向外传出到函数外面,这个传出来的值将进行什么操作,由调用这个函数的时候决定
var a=0
function seta(time,callback){
setTimeout(function () {
a=10;
callback(a)
},time);
}
console.log(a);
seta(3000,function () {
console.log(a);
})
//返回 0 10
seta中的function相当于callback,此时对callback得到的这个变量进行什么操作自己决定
console.log(a);
seta(3000,function () {
console.log(a+"=============");
})
//返回 0 10============
网友评论