callback js
- IT科技
- 關注:1.68W次
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即為回撥函式。
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就可以非常方便的控制排序的規則。
- 文章版權屬於文章作者所有,轉載請註明 https://shqsg.com/dianzi/pq0vn9.html