前兩篇一直有提到的函式呼叫方式:
function identifier (Arguments) {
statements...
return theValue;
}
但除了一般的呼叫方式以外,還有一個叫做回呼函式 (callback function),
意思就是由 A 呼叫 B 執行任務。
本來疑惑回呼函式什麼時候才會用到,但看了範例之後發現其實很常見。
例如:
// js function
function load() {
document.write("hi");
}
html 省略標籤頭尾以免被編輯器吃掉
body onload="load();"/body
在此例中,由 A(瀏覽器) 呼叫 B(JavaScript)執行任務。
js 裡並沒有直接呼叫 load();
,但是 html 依然會出現我要的結果 “hi”。
或者再看看這例:
// js function
function jump() {
alert('over');
}
html 省略標籤頭尾以免被編輯器吃掉
input type="button" value="OK" onclick="jump();"
按下 A(按鈕)呼叫 B(JavaScript)執行任務。
不過一般工程師或者前端應該很討厭在 html 上動手動腳,
就跟 CSS 就該在或者 .css是一樣的:頁面太多指令分散會造成日後維護修改的不便。
這時候就該換個做法:
function load() {
document.write("hi");
}
window.onload = load;
在視窗讀入時,執行 load;
這裡的 load; 是沒有 () 的,因為這裡的load;是 “參考” load(); ,這部分稱為函式參考 (function reference)
函式參考這裡的名稱當成變數使用。
如果寫成 load(); 就…直接跑完了
(註:onload 事件在頁面讀完後立刻發生)
// js function
function jump() {
alert('over');
}
document.getElementById('btn').onclick = function(evt) {
jump();
}
html 省略標籤頭尾以免被編輯器吃掉
input id="btn" type="button" value="OK"
找到 html 文件的 id 元素 “btn”,當按下時執行事件函式(就是 (evt) ),執行裏面的函式。
本文同步發表於 http://ithelp.ithome.com.tw/ironman7/app/#/article/dev/recent/10157144