下面是JS回調函數的簡單示例代碼:html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button style="" onclick="test()">點擊</button>
</body>
<script>
function a(callback)
{
alert("我是函數a");
callback();
}
function b(){
alert("我是回調函數b");
}
function c(){
alert("我是回調函數c");
}
function test() {
a(b)//此時函數a裏面的callback()指的就是函數b
a(c)//此時函數a裏面的callback()指的就是函數c
}
</script>
</html>
複製代碼
回調函數並非只有JS纔有,其它不少開發語言都有,百度百科解釋也很清楚,我提取了一句話:回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。bash
我的理解: 首先它是一個函數,函數便是咱們說的方法,該函數做爲另外一個函數的參數,當另外一個函數須要的時候能夠對該函數進行調用從而執行該函數。爲何須要回調函數?我以爲這就是一種代碼封裝,實現重用。固然你也能夠不用,全部代碼都寫在一個方法裏,但當不少個方法中都須要這個功能的時候你就須要寫不少次重複的代碼,致使代碼冗餘,函數體臃腫雜亂,因此這裏就須要將功能相同的代碼封裝到一個函數當中。爲啥將一個函數做爲另外一個函數的參數?我直接調用不也能夠嗎?以下函數
function d() {
alert("我是回調函數d");
b()
}
複製代碼
固然是能夠的,可是這個問題跟「爲啥定義一個變量,我直接傳遞一個具體的數據不能夠嗎?」是同樣的,若是你能明白變量、形參、實參存在的意義,那這個問題天然就能明白。spa