在談回調(diào)函數(shù)之前,先看下下面兩段代碼:
不妨猜測一下代碼的結(jié)果。
function say (value) { alert(value);}alert(say);alert(say('hi js.'));
如果你測試了,就會發(fā)現(xiàn):
只寫變量名 say 返回的將會是 say方法本身,以字符串的形式表現(xiàn)出來。而在變量名后加()如say()返回的就會使say方法調(diào)用后的結(jié)果,這里是彈出value的值。
再看下面的兩段代碼:
function say (value) { alert(value);}function execute (someFunction, value) { someFunction(value);}execute(say, 'hi js.');
與
function execute (someFunction, value) { someFunction(value);}execute(function(value){alert(value);}, 'hi js.');
上面第一段代碼是將say方法作為參數(shù)傳遞給execute方法
第二段代碼則是直接將匿名函數(shù)作為參數(shù)傳遞給execute方法
實際上:
function say (value) { alert(value);}// 注意看下面,直接寫say方法的方法名與下面的匿名函數(shù)可以認為是一個東西// 這樣再看上面兩段代碼是不是對函數(shù)可以作為參數(shù)傳遞就更加清晰了say;function (value) { alert(value);}
這里的say或者匿名函數(shù)就被稱為回調(diào)函數(shù)。
如果回調(diào)函數(shù)需要傳參,如何做到,這里介紹兩種解決方案。
回調(diào)函數(shù)應(yīng)用場景多用在使用 js 寫組件時,尤其是組件的事件很多都需要回調(diào)函數(shù)的支持。
關(guān)于回調(diào)函數(shù)還有什么問題可以在下面留言,一起交流。