[JS奇怪的世界]No.41 閉包與回呼

前言

前面講完了閉包、一級函數等等,說真的就跟課程老師講的一樣,腦袋快有點爆炸了,所以這邊只延續上一章節的的相關資訊做延伸,一般來講如果我們在 JavaScript 使用過 setTimeout、jQuery,這些其實都是使用了閉包,所以這章節要來聊聊閉包和回呼 (callback)。

閉包與回呼

首先我們先試著建立一個簡單的函數範例 ↓

1
2
3
4
5
6
function sayHiLater() {
var greeting = 'Hi';
setTimeout(function() {
console.log(greeting);
}, 3000);
}

這個範例我們都知道會在三秒後出現 Hi,而這個過程其實我們已經使用了函數表示式及閉包。

而 jQuery 也是一樣,例如 click 事件。

1
2
3
$('button').click(function () {
...
});

另外這也是一個閉包,從上面這兩個範例我們有可能已經使用過了閉包、函數表示式及一級函數。

閉包

而回呼函數是當某個函數執行完你給他的執行函數,然後那個函數再回呼你給他的函數,在白話一點就是當某個函數執行完畢要給該函數執行的函數就稱為回呼。

讓我們從範例來看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

function tellMeWhenDone(callback) {
var a = 1000;
var b = 2000;
//當結束時呼叫另一個函數
callback();
}

tellMeWhenDone(function() {
console.log('做完了!');
})

tellMeWhenDone(function() {
console.log('我還在做');
})

callback

我們可以看到呼叫了兩次 tellMeWhenDone,然後參數 function 帶入 callback,當 tellMeWhenDone 執行完之後就會呼叫剛剛帶入的函數,這就是回呼。

callback

簡單來講就是 function 執行完畢後在執行另一個。

圖源

JavaScript 全攻略:克服 JS 奇怪的部分

Liker 讚賞 (拍手)

如果這一篇筆記文章對你有幫助,希望可以求點支持或 牡蠣 鼓勵 (ノД`)・゜・。

Liker 是一個按讚(拍手)的讚賞機制,每一篇文章最多可以按五下(拍手),按讚過程你是完全不用付費的(除非你想要每個月贊助我 :D),你只需要登入帳號就可以開始按讚。
而 Liker 會依據按讚數量分配獎金給創作者,所以如果你願意按個讚我會非常感謝你唷。

Google AD

撰寫一篇文章其實真的很花時間,如果你願意「關閉 Adblock (廣告阻擋器)」來支持我的話,我會非常感謝你 ヽ(・∀・)ノ