當前位置:生活全書館 >

IT科技

> callback js

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就可以非常方便的控制排序的規則

標籤: callback js
  • 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/pq0vn9.html