JS回調(diào)函數(shù)深入理解
本文實例講述了JS回調(diào)函數(shù)。分享給大家供大家參考,具體如下:
一、前奏
在談回調(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的值。
二、js中函數(shù)可以作為參數(shù)傳遞
再看下面的兩段代碼:
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ù)可以認(rèn)為是一個東西 // 這樣再看上面兩段代碼是不是對函數(shù)可以作為參數(shù)傳遞就更加清晰了 say; function (value) { alert(value); }
這里的say或者匿名函數(shù)就被稱為回調(diào)函數(shù)。
三、回調(diào)函數(shù)易混淆點——傳參
如果回調(diào)函數(shù)需要傳參,如何做到,這里介紹兩種解決方案。
將回調(diào)函數(shù)的參數(shù)作為與回調(diào)函數(shù)同等級的參數(shù)進(jìn)行傳遞
回調(diào)函數(shù)的參數(shù)在調(diào)用回調(diào)函數(shù)內(nèi)部創(chuàng)建
四、寫在最后
回調(diào)函數(shù)應(yīng)用場景多用在使用 js 寫組件時,尤其是組件的事件很多都需要回調(diào)函數(shù)的支持。
關(guān)于回調(diào)函數(shù)還有什么問題可以在下面留言,一起交流。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
使用javascript實現(xiàn)Iframe自適應(yīng)高度
這篇文章主要介紹了使用javascript實現(xiàn)Iframe自適應(yīng)高度,需要的朋友可以參考下2014-12-12IE和Firefox在JavaScript應(yīng)用中的兼容性探討
今天在使用CSS屬性的時候發(fā)現(xiàn)"cursor:hand;"在Firefox中鼠標(biāo)不會變?yōu)槭中?,后來上網(wǎng)搜索了一下資料,發(fā)現(xiàn)hand這個cursor屬性在Firrefox中不兼容,使用"cursor:pointer"就都可以顯示了。2008-04-04微信小程序多文件上傳 Tdesign及導(dǎo)入失敗問題
小程序文件上傳還是有點麻煩的,其實主要還是小程序?qū)Φ慕涌谟兄T多的不便,比如說,文件不能批量提交,只能一個個的提交,小程序的上傳需要專門的接口,這篇文章主要介紹了微信小程序多文件上傳 Tdesign及導(dǎo)入失敗問題,需要的朋友可以參考下2023-11-11如何實現(xiàn)textarea里的不同文本顯示不同顏色
如何實現(xiàn)textarea里的不同文本顯示不同顏色呢?控制textarea的style設(shè)置Textarea以及把文本放到標(biāo)記里都不會起作用,下面有個不錯的解決方法,感興趣的朋友可以了解下2014-01-01