維基百科的解釋是:
回調(diào)函數(shù)斩狱,或簡(jiǎn)稱(chēng)回調(diào)(Callback 即call then back 被主函數(shù)調(diào)用運(yùn)算后會(huì)返回主函數(shù))扎瓶,是指通過(guò)函數(shù)參數(shù)傳遞到其它代碼的所踊,某一塊可執(zhí)行代碼的引用概荷。在js中允許簡(jiǎn)單的將函數(shù)名作為參數(shù)傳遞秕岛。
知乎上最高票的回答是用了一個(gè)比喻:
你到一個(gè)商店買(mǎi)東西误证,剛好你要的東西沒(méi)有貨继薛,于是你在店員那里留下了你的電話(huà),過(guò)了幾天店里有貨了遏考,店員就打了你的電話(huà),然后你接到電話(huà)后就到店里去取了貨蓝谨。在這個(gè)例子里,你的電話(huà)號(hào)碼就叫回調(diào)函數(shù)譬巫,你把電話(huà)留給店員就叫登記回調(diào)函數(shù),店里后來(lái)有貨了叫做觸發(fā)了回調(diào)關(guān)聯(lián)的事件芦昔,店員給你打電話(huà)叫做調(diào)用回調(diào)函數(shù)诱贿,你到店里去取貨叫做響應(yīng)回調(diào)事件烟零。
https://www.zhihu.com/question/19801131/answer/13005983
所以傳給對(duì)方一個(gè)函數(shù),當(dāng)對(duì)方在合適的時(shí)機(jī)調(diào)用這個(gè)函數(shù),這個(gè)函數(shù)就是回調(diào)函數(shù).例如:
function f1(callback) {
console.log(1)
callback();
}
function f2() {
console.log(2)
}
f1(f2);
回調(diào)函數(shù)的優(yōu)點(diǎn)是便于理解,缺點(diǎn)是代碼間耦合程度高且程序流程不明晰,不方便理解維護(hù).