JS:回调函数1
回调函数 (callback)
我理解的回调函数就是,将一个函数a作为参数,传递进另一个函数b运行,那么a就是那个回调函数。
例:
function fn(arg) { var a = 1; arg(a);//调用fm,并把a当作参数传入fm } fn(function fm() { console.log("this is fm"); }); //还可以换成另一种写法就是直接写回调函数的函数名: // fn(fm); // function fm() { // console.log("this is fm"); // }
打印结果:
this is fm
理解:
如果直接在 console.log("this is fm") 中写入‘a’,打印会报错,这说明fm不在fn的作用域内,仅仅是被fn调用
例2:
function fn(arg) { var a = 1; console.log(arg); arg(); } fn(function fm() {console.log("this is fm");});
打印结果:
ƒ fm() {
console.log("this is fm");
}
this is fm
理解:
我们可以看到打印arg参数是fm整个函数被传入还未被调用。当arg()时,才是调用了fm。
例3:
function fn(url,callback){
var output = url;
callback(output);
}
fn('http://www.baidu.com',function fm(data){console.log(data);})
打印结果:
理解:
fn调用时,传入的参数是一个字符串和一个函数;在fn内部又声明了一个变量被赋值为传入的字符串,然后再将那个变量传入回调函数调用的代码中,运行输出。