js 徹底理解回撥函式
一、前奏
在談回撥函式之前,先看下下面兩段程式碼:
不妨猜測一下程式碼的結果。
function say (value) {
alert(value);
}
alert(say);
alert(say('hi js.'));
- 1
- 2
- 3
- 4
- 5
如果你測試了,就會發現:
只寫變數名 say 返回的將會是 say方法本身,以字串的形式表現出來。
而在變數名後加()如say()返回的就會使say方法呼叫後的結果,這裡是彈出value的值。
- 1
- 2
二、js中函式可以作為引數傳遞
再看下面的兩段程式碼:
function say (value) {
alert(value);
}
function execute (someFunction, value) {
someFunction(value);
}
execute(say, 'hi js.');
- 1
- 2
- 3
- 4
- 5
- 6
- 7
與
function execute (someFunction, value) {
someFunction(value);
}
execute(function(value){alert(value);}, 'hi js.');
- 1
- 2
- 3
- 4
上面第一段程式碼是將say方法作為引數傳遞給execute方法
第二段程式碼則是直接將匿名函式作為引數傳遞給execute方法
實際上:
function say (value) {
alert(value);
}
// 注意看下面,直接寫say方法的方法名與下面的匿名函式可以認為是一個東西
// 這樣再看上面兩段程式碼是不是對函式可以作為引數傳遞就更加清晰了
say;
function (value) {
alert(value);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
這裡的say或者匿名函式就被稱為回撥函式。
- 1
- 2
三、回撥函式易混淆點——傳參
如果回撥函式需要傳參,如何做到,這裡介紹兩種解決方案。
- 將回撥函式的引數作為與回撥函式同等級的引數進行傳遞
- 回撥函式的引數在呼叫回撥函式內部建立
四、寫在最後
回撥函式應用場景多用在使用 js 寫元件時,尤其是元件的事件很多都需要回撥函式的支援。
關於回撥函式還有什麼問題可以在下面留言,一起交流。
相關文章
- JS—回撥函式JS函式
- [JS]回撥函式和回撥地獄JS函式
- 【計算機內功心法】六:10張圖讓你徹底理解回撥函式計算機函式
- 回撥函式的理解(一)函式
- JS之回撥函式(callback)JS函式
- 從IL角度徹底理解回撥_委託_指標指標
- 深入理解 JavaScript 回撥函式JavaScript函式
- 回撥函式函式
- 回撥函式到promise再到理解async/await函式PromiseAI
- 關於 js 中的回撥函式 callbackJS函式
- 回撥函式(CallBack)函式
- JavaScript回撥函式JavaScript函式
- JavaScript 回撥函式JavaScript函式
- arcgis api for js回撥函式如何等待同步APIJS函式
- 函式指標&回撥函式Callback函式指標
- 回撥函式 與 函式閉包函式
- 函式回撥(C++)函式C++
- 回撥函式的作用函式
- Python/OpenCV:回撥函式PythonOpenCV函式
- TLS回撥函式(Note)TLS函式
- java 回撥函式示例Java函式
- JS 非同步發展流程(回撥函式=>Async/await)JS非同步函式AI
- C++回撥函式 用法C++函式
- java回撥函式機制Java函式
- java回撥函式-非同步回撥-簡明講解Java函式非同步
- 【知識點】inline函式、回撥函式、普通函式inline函式
- JS指令碼載入後執行相應回撥函式JS指令碼函式
- 初學 PHP 對於回撥函式的一些理解PHP函式
- C++中的回撥函式C++函式
- setInterval 回撥函式傳引數函式
- 函式指標的重要用途——回撥函式函式指標
- 徹底理解Node.js中的BufferNode.js
- Python技法3:匿名函式、回撥函式和高階函式Python函式
- C語言函式指標與回撥用函式C語言函式指標
- JavaScript:鉤子函式與回撥函式的區別JavaScript函式
- Fastadmin fast.api.open回撥函式ASTAPI函式
- 回撥函式的作用與意義函式
- C 語言回撥函式詳解函式