更新時間:2022-11-21 來源:黑馬程序員 瀏覽量:
項目開發(fā)中,若想要函數(shù)體中某部分功能由調(diào)用者決定,此時可以使用回調(diào)函數(shù)。所謂回調(diào)函數(shù)指的就是一個函數(shù)A作為參數(shù)傳遞給一個函數(shù)B,然后在B的函數(shù)體內(nèi)調(diào)用函數(shù)A此時,我們稱函數(shù)A為回調(diào)函數(shù)。其中,匿名函數(shù)常用作函數(shù)的參數(shù)傳遞,實現(xiàn)回調(diào)函數(shù)為了讓讀者更加清晰地了解什么是回調(diào)函數(shù),下面我們以算術(shù)運(yùn)算為例進(jìn)行演示。
function cal(numl, num2, fn) { return fn(numl, num2); } console.log(cal(45, 55, function(a, b) { return a + b; })); console.log(cal(10, 20, function(a, b) { return a * b; }));
上述第1~3行代碼定義了cal()函數(shù),用于返回fn回調(diào)函數(shù)的調(diào)用結(jié)果。第4~6行代碼用于調(diào)用cal()函數(shù),并指定該回調(diào)函數(shù)用于返回其兩個參數(shù)相加的結(jié)果,因此可在控制臺查看到結(jié)果為 100。同理,第7~ 9行代碼在調(diào)用 cal0 函數(shù)時,將回調(diào)函數(shù)指定為返回其兩個參數(shù)相乘的結(jié)果,因此可在控制臺查看到結(jié)果為 200。
從以上案例可以看出,在函數(shù)(如cal()函數(shù))中設(shè)置了回調(diào)函數(shù)后,可以根據(jù)調(diào)用時傳遞的不同參數(shù)(如相加的函數(shù),相乘的函數(shù)等),在函數(shù)體中特定的位置實現(xiàn)不同的功能相當(dāng)于在函數(shù)體內(nèi)根據(jù)用戶的需求完成了不同功能的定制。