js 回調函數理解與應用

  定義:在JavaScript中,回調函數具體的定義爲:函數A做爲參數(函數引用)傳遞到另外一個函數B中,而且這個函數B執行函數A。咱們就說函數A叫作回調函數。若是沒有名稱(函數表達式),就叫作匿名回調函數。函數

  理解:回調函數就是一個經過函數指針調用的函數。若是你把函數的指針(地址)做爲參數傳遞給另外一個函數,當這個指針被用來調用其所指向的函數時,咱們就說這是回調函數。回調函數不是由該函數的實現方直接調用,而是在特定的事件或條件發生時由另外的一方調用的,用於對該事件或條件進行響應。ui

  舉個例子:spa

//首先,建立通用詩的生成函數;它將做爲下面的getUserInput函數的回調函數
 
    function genericPoemMaker(name, gender) {
        console.log(name + " is finer than fine wine.");
        console.log("Altruistic and noble for the modern time.");
        console.log("Always admirably adorned with the latest style.");
        console.log("A " + gender + " of unfortunate tragedies who still manages a perpetual smile");
    }
 
        //callback,參數的最後一項,將會是咱們在上面定義的genericPoemMaker函數
        function getUserInput(firstName, lastName, gender, callback) {
            var fullName = firstName + " " + lastName;
 
            // Make sure the callback is a function
            if (typeof callback === "function") {
            // Execute the callback function and pass the parameters to it
            callback(fullName, gender);
            }
        }    
getUserInput("Michael", "Fassbender", "Man", genericPoemMaker);
 
 // 輸出 /* Michael Fassbender is finer than fine wine. Altruistic and noble for the modern time. Always admirably adorned with the latest style. A Man of unfortunate tragedies who still manages a perpetual smile. */ 

咱們能夠換一個回調函數試試:

function greetUser(customerName, sex) { var salutation = sex && sex === "Man" ? "Mr." : "Ms."; console.log("Hello, " + salutation + " " + customerName); } // 將greetUser做爲一個回調函數 getUserInput("Bill", "Gates", "Man", greetUser); // 這裏是輸出 Hello, Mr. Bill Gates
相關文章
相關標籤/搜索