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?
1.性能没有区别
2.回调函数是作为参数传递的,操作更加灵活,比如,你可以定义一个函数c,那可以运行
b(c),当你在函数内运行函数的时候,就失去了变量的灵活性。
嗯,是你理解错了,调用的效果是一样的。还有
callback.call(this);
画蛇添足,跟callback()
的 this 是一样的。回调的好处是依赖倒置,不用修改 a 的代码就可以让 a 调用 c、d、e....