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 寫元件時,尤其是元件的事件很多都需要回撥函式的支援。
關於回撥函式還有什麼問題可以在下面留言,一起交流。
相關文章
- 回撥函式透徹理解Java函式Java
- 【計算機內功心法】六:10張圖讓你徹底理解回撥函式計算機函式
- JS—回撥函式JS函式
- [JS]回撥函式和回撥地獄JS函式
- 回撥函式的理解(一)函式
- Java回撥函式的理解Java函式
- 從IL角度徹底理解回撥_委託_指標指標
- JS之回撥函式(callback)JS函式
- js中的回撥函式JS函式
- js函式回撥錯誤JS函式
- 深入理解 JavaScript 回撥函式JavaScript函式
- JS閉包函式和回撥函式JS函式
- js 中的submit 回撥函式JSMIT函式
- 徹底理解 thunk 函式與 co 框架函式框架
- 回撥函式函式
- 理解javascript中的回撥函式(callback)【轉】JavaScript函式
- JavaScript 回撥函式JavaScript函式
- JavaScript回撥函式JavaScript函式
- 動畫回撥函式動畫函式
- java回撥函式Java函式
- 回撥函式(CallBack)函式
- 回撥函式,求積函式函式
- 回撥函式到promise再到理解async/await函式PromiseAI
- 對於Python中回撥函式的理解Python函式
- 關於 js 中的回撥函式 callbackJS函式
- 回撥函式 與 函式閉包函式
- 函式指標&回撥函式Callback函式指標
- 回撥函式的作用函式
- TLS回撥函式(Note)TLS函式
- java 回撥函式示例Java函式
- Python回撥函式Python函式
- android回撥函式Android函式
- 函式回撥(C++)函式C++
- arcgis api for js回撥函式如何等待同步APIJS函式
- 徹底理解 JS 中 this 的指向JS
- 徹底理解js中this的指向JS
- C++回撥函式 用法C++函式
- Python/OpenCV:回撥函式PythonOpenCV函式