Heim > Fragen und Antworten > Hauptteil
Die Definition einer Rückruffunktion besteht darin, Funktion b als Parameter zur Ausführung an a zu übergeben. Zu diesem Zeitpunkt habe ich plötzlich eine Frage: Was ist der Unterschied zwischen ihr und dem direkten Aufruf von b in Funktion a?
Ich habe selbst eine Demo geschrieben
function a(){
b();
console.log('hello world');
}
function b(){
var n = 0;
for(var i = 0;i < 1000000000;i++){
n++;
}
return n;
}
a(); //hello world
Es dauert etwa 3 Sekunden, bis das Ausgabeergebnis angezeigt und dann in Form einer Rückruffunktion neu geschrieben wird
function a(callback){
callback.call(this);
console.log('hello world');
}
function b(){
var n = 0;
for(var i = 0;i < 1000000000;i++){
}
console.log(1);
}
a(b); //hello world
Das Ausgabeergebnis ist erst nach 3 Sekunden sichtbar.
Ich habe viele Artikel gefunden, in denen erklärt wird, dass die normale Ausführung von Funktion a nicht behindert wird, wenn b als Rückruffunktion von Funktion a ausgeführt wird , die zweite Methode sollte sofort sein Wenn es Hallo Welt ausgibt, liegt es daran, dass ich die falsche Rückruffunktion verwendet habe? Haben Sie immer noch Probleme mit dem Verständnis?
淡淡烟草味2017-06-26 10:55:07
1.性能没有区别
2.回调函数是作为参数传递的,操作更加灵活,比如,你可以定义一个函数c,那可以运行
b(c),当你在函数内运行函数的时候,就失去了变量的灵活性。
漂亮男人2017-06-26 10:55:07
嗯,是你理解错了,调用的效果是一样的。还有 callback.call(this);
画蛇添足,跟 callback()
的 this 是一样的。
回调的好处是依赖倒置,不用修改 a 的代码就可以让 a 调用 c、d、e....