回調(diào)函數(shù)的簡析

回調(diào)函數(shù)是將參數(shù)傳入另一個(gè)函數(shù),在另一個(gè)函數(shù)內(nèi)部實(shí)現(xiàn)調(diào)用的函數(shù),本質(zhì)上被構(gòu)造出來后是一個(gè)函數(shù)對(duì)象,可以作為函數(shù)參數(shù)使用。

例如,首先寫一個(gè)函數(shù):

function text(callback) {

? ? ?console.log("this is a bug");

? ? ? callback();

}

再定義一個(gè)函數(shù)“

fiction log() {

? ? ? ?console.log("this is a callback");

}

text(log);

這樣的話,既執(zhí)行了第一個(gè)函數(shù),同時(shí)也執(zhí)行了第二個(gè)函數(shù)。

同時(shí),回調(diào)函數(shù)也可以根據(jù)需求改變傳入的回調(diào)函數(shù)來間接改變主調(diào)函數(shù)的功能,讓程序變得更加靈活

借用一下上面的例子,將第二個(gè)函數(shù)變?yōu)椋?/p>

function printNumber() {

? ? ? ? ? console.log("123")

}

text(printNumber);

這樣得到的結(jié)果就會(huì)顯示第二個(gè)函數(shù)變了

寫一個(gè)簡單的例子來應(yīng)用一下回調(diào)函數(shù):

定義一個(gè)冒泡函數(shù),回調(diào)函數(shù)用于確定數(shù)組是升序還是降序排序

function bubbleSort(array,callback) {

? ? ?for ( var i = 0 ; i < array.length - 1 ; i++) {

? ? ? ? ? ? ? for (var j = 0 ; j < array.length - i - 1 ; j++) {

? ? ? ? ? ? ? ? ? ? ? ?if ( callback(array[j] , array[ j + 1]) ) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var tmp = array[j];

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? array[j] = array[ j + 1];

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?array[j + 1] = tmp;

? ? ? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? }

? ? ? ? }

function ascending(a,b) {

? ? ? ? ?return ? a > b ;

}

function descending(a,b) {

? ? ? ? ?return ? a < b;

}

var ?array = [ 4,5,,5,6,3,2,8,9,5,4,1,4];

bubbleSort(array,ascending);

console.log(array);

bubbleSort(array.descending);

console.log(array);

這樣就可以得到升序和降序的排列了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容