IT科技

當前位置 /首頁/IT科技 > /列表

callback,js

1、js中callback簡介:

一個被當做參數的函數,即爲回調函數。

在JS中萬物皆爲對象。函數本身也是一個對象,既然是對象,所以函數當然可以當做函數的參數。

//可以這樣創建函數let fun = new Function("arg1", "arg2", "return arg1 * arg2;");fun(3, 3);  //6

如上述代碼,fun函數就是一個對象。

function fun1(fn){    fn();}function fun2(){    console.log("callBack");}fun1(fun2); //callBack

上述代碼中,fun2做爲fun1的參數,fun2即爲回調函數。

js callback

2、回調函數的作用

幾乎所有的第三方函數我們都無法修改函數的內部實現, 比如數組的forEach,map等。那麼我們也就無法在這樣的函數體中,調用自己所寫的功能模塊。所以此時,回調函數就提供了這樣的能力,使我們可以將自己所書寫的函數傳入第三方函數中,從而實現完整的功能。

舉例:

通過冒泡排序,來展示回調函數的使用方式。

let arr = [5,6,4,7,3,8,2,9,0,1];    function smallToLarge(L,R){//回調函數        return L > R;    }    function LargeTosmall(L,R){//回調函數        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++){                //將回調函數當做參數,決定結果是由小到大,還是由大到小                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

函數bubbleSort擁有一個參數callBack,而smallToLarge與LargeTosmall均爲回調函數,當我們在bubbleSort函數調用時,傳入smallToLarge與LargeTosmall就可以非常方便的控制排序的規則。

TAG標籤:js callback #