1. 程式人生 > 其它 >js回撥函式使用方法

js回撥函式使用方法

技術標籤:nodejsjavascriptjavascriptjs

Javascript 中函式實際上是物件,它能被儲存在變數中,能作為函式引數被傳遞,能在函式中被建立,能從函式中返回;

釋義:回撥函式,一個函式被作為引數傳遞給另一個函式(在這裡我們把另一個函式叫做“otherFunction”),回撥函式在otherFunction中被呼叫。

//  注意到click方法中是一個函式而不是一個變數,
//  它就是回撥函式
$("#btn").click(function() {
    alert("hello world");
});  

//或者上面寫成以下
function click() { // 它就是回撥函式 alert("hello world"); } $("#btn").click(click);

1、回撥函式是怎樣運作的?

因為函式在Javascript中是第一類物件,我們像對待物件一樣對待函式,因此我們能像傳遞變數一樣傳遞函式,在函式中返回函式,在其他函式中使用函式。當我們將一個回撥函式作為引數傳遞給另一個函式是,我們僅僅傳遞了函式定義。我們並沒有在引數中執行函式。我們並不傳遞像我們平時執行函式一樣帶有一對執行小括號()的函式。

需要注意的很重要的一點是回撥函式並不會馬上被執行。它會在包含它的函式內的某個特定時間點被“回撥”(就像它的名字一樣)

2、實現回撥函式的基本原理?
使用命名函式或者匿名函式作為回撥,像之前的例子一樣,第一種方法就是匿名函式作為回撥(使用了引數位置定義的匿名函式作為回撥函式)。第二種方式就是命名函式作為回撥(定義一個命名函式並將函式名作為變數傳遞給函式)

常用方法,傳遞引數給回撥函式:

//第一種方法:匿名函式作為回撥函式
var generalLastName = "BruceLee";
function getInput(options, callback){
    var arr = [];
    arr.push(options);
    //將全域性變數generalLastName傳遞給回撥函式
callback(generalLastName,arr); } getInput({name:"long",speciality:"WingChun"}, function(generalLastName,arr){ console.log(generalLastName + ":" + arr[0].speciality) }); //第二種方法:命名函式作為回撥函式 var generalLastName = "BruceLee"; function getInput(options, callback){ var arr = []; arr.push(options); //將全域性變數generalLastName傳遞給回撥函式 callback(generalLastName,arr); } function call(generalLastName,arr){ console.log(generalLastName + ":" + arr[0].speciality) } getInput({name:"long",speciality:"WingChun"}, call);