1. 程式人生 > >js 徹底理解回調函數

js 徹底理解回調函數

pan sharp 變量名 支持 exec tex 傳參 彈出 csharp

一、前奏

在談回調函數之前,先看下下面兩段代碼:
不妨猜測一下代碼的結果。

function say (value) {
    alert(value);
}
alert(say);
alert(say(‘hi js.‘));

  如果你測試了,就會發現:

只寫變量名  say   返回的將會是 say方法本身,以字符串的形式表現出來。
而在變量名後加()如say()返回的就會使say方法調用後的結果,這裏是彈出value的值。最後彈出undifined,因為沒有返回值得函數執行完畢,默認返回undefined

  

二、js中函數可以作為參數傳遞

再看下面的兩段代碼:

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方法作為參數傳遞給execute方法
第二段代碼則是直接將匿名函數作為參數傳遞給execute方法

實際上:

function say (value) {
    alert(value);
}
// 註意看下面,直接寫say方法的方法名與下面的匿名函數可以認為是一個東西
// 這樣再看上面兩段代碼是不是對函數可以作為參數傳遞就更加清晰了
say;

function (value) {
    alert(value);
}

  

這裏的say或者匿名函數就被稱為回調函數。

  

三、回調函數易混淆點——傳參

如果回調函數需要傳參,如何做到,這裏介紹兩種解決方案。

  • 將回調函數的參數作為與回調函數同等級的參數進行傳遞

技術分享

  • 回調函數的參數在調用回調函數內部創建

四、寫在最後

回調函數應用場景多用在使用 js 寫組件時,尤其是組件的事件很多都需要回調函數的支持。
關於回調函數還有什麽問題可以在下面留言,一起交流。

js 徹底理解回調函數