js中callback是什么呢?不知道的小伙伴來看看小編今天的分享吧!
1、js中callback簡介:
一個被當做參數(shù)的函數(shù),即為回調(diào)函數(shù)。
在JS中萬物皆為對象。函數(shù)本身也是一個對象,既然是對象,所以函數(shù)當然可以當做函數(shù)的參數(shù)。
//可以這樣創(chuàng)建函數(shù)let fun = new Function("arg1", "arg2", "return arg1 * arg2;");fun(3, 3); //6
如上述代碼,fun函數(shù)就是一個對象。
function fun1(fn){ fn(); } function fun2(){ console.log("callBack"); } fun1(fun2); //callBack
上述代碼中,fun2做為fun1的參數(shù),fun2即為回調(diào)函數(shù)。
2、回調(diào)函數(shù)的作用
幾乎所有的第三方函數(shù)我們都無法修改函數(shù)的內(nèi)部實現(xiàn), 比如數(shù)組的forEach,map等。那么我們也就無法在這樣的函數(shù)體中,調(diào)用自己所寫的功能模塊。所以此時,回調(diào)函數(shù)就提供了這樣的能力,使我們可以將自己所書寫的函數(shù)傳入第三方函數(shù)中,從而實現(xiàn)完整的功能。
舉例:
通過冒泡排序,來展示回調(diào)函數(shù)的使用方式。
let arr = [5,6,4,7,3,8,2,9,0,1]; function smallToLarge(L,R){//回調(diào)函數(shù) return L > R; } function LargeTosmall(L,R){//回調(diào)函數(shù) return L < R; } function bubbleSort(arr,callBack){ for(let i=0; i<arr.length-1; i++){ for(let j=0; j<arr.length-i-1; j++){ //將回調(diào)函數(shù)當做參數(shù),決定結(jié)果是由小到大,還是由大到小 if(callBack(arr[j],arr[j+1])){ [arr[j],arr[j+1]] = [arr[j+1],arr[j]]; } } } } bubbleSort(arr,smallToLarge); console.log(arr);//0123456789 bubbleSort(arr,LargeTosmall); console.log(arr);//9876543210
函數(shù)bubbleSort擁有一個參數(shù)callBack,而smallToLarge與LargeTosmall均為回調(diào)函數(shù),當我們在bubbleSort函數(shù)調(diào)用時,傳入smallToLarge與LargeTosmall就可以非常方便的控制排序的規(guī)則。
以上就是小編今天的分享了,希望可以幫助到大家。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com