一、前奏
在談回調函數之前,先看下下面兩段代碼:
不妨猜測一下代碼的結果。
function say (value) {
alert(value);
}
alert(say);
alert(say('hi js.'));12345
如果你測試了,就會發現:
只寫變量名 say 返回的將會是 say方法本身,以字符串的形式表現出來。
而在變量名后加()如say()返回的就會使say方法調用后的結果,這里是彈出value的值。12
二、js中函數可以作為參數傳遞
再看下面的兩段代碼:
function say (value) {
alert(value);
}
function execute (someFunction, value) {
someFunction(value);
}
execute(say, 'hi js.');1234567
與
function execute (someFunction, value) {
someFunction(value);
}
execute(function(value){alert(value);}, 'hi js.');1234
上面第一段代碼是將say方法作為參數傳遞給execute方法
第二段代碼則是直接將匿名函數作為參數傳遞給execute方法
實際上:
function say (value) {
alert(value);
}
// 注意看下面,直接寫say方法的方法名與下面的匿名函數可以認為是一個東西
// 這樣再看上面兩段代碼是不是對函數可以作為參數傳遞就更加清晰了
say;
function (value) {
alert(value);
}12345678910
這里的say或者匿名函數就被稱為回調函數。
三、回調函數易混淆點——傳參
如果回調函數需要傳參,如何做到,這里介紹兩種解決方案。
- 將回調函數的參數作為與回調函數同等級的參數進行傳遞
- 回調函數的參數在調用回調函數內部創建
作者:dkvirus
來源:CSDN
原文:https://blog.csdn.net/baidu_32262373/article/details/54969696?utm_source=copy
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!