回調函數
回調函數是一段可執行的代碼段,它作爲一個參數傳遞給其他的代碼,其作用是在需要的時候方便調用這段(回調函數)代碼
js中函數=對象,對象可以作爲參數傳給函數。
函數可以作爲參數給一個函數,這個參數就是回調函數
使用
例子1
回調函數是異步操作最基本的方法。
下面是兩個函數f1和f2,編程的意圖是f2必須等到f1執行完成,才能執行。如果f1是異步操作,f2會立即執行,不會等到f1結束再執行。
function f1() {
}
function f2() {
}
f1();
f2();
改寫回調
function f1(callback) {
callback();
}
function f2() {
}
f1(f2);
例子2
function add(num1, num2, callback){
var sum = num1 + num2;
callback(sum);
}
function print(num){
console.log(num);
}
add(1, 2, print); //=>3
例子3
匿名回調函數
function add(num1, num2, callback){
var sum = num1 + num2;
callback(sum);
}
add(1, 2, function(sum){
console.log(sum); //=>3
});
回調函數優缺點
- 優點是簡單、容易理解和實現
- 缺點是不利於代碼的閱讀和維護,各個部分之間高度耦合(coupling),使得程序結構混亂、流程難以追蹤(尤其是多個回調函數嵌套的情況),而且每個任務只能指定一個回調函數。
使用場景
- 異步編程
- 事件監聽、處理
- setTimeout、setInterval方法
參考鏈接
https://javascript.ruanyifeng.com/advanced/single-thread.html#toc2
https://www.w3cplus.com/javascript/Sexy-Javascript-understand-the-callback-function-with-the-use-of-Javascript-in.html