亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

執行外部函數 Vs。使用回調函數——何時使用其中一個?

執行外部函數 Vs。使用回調函數——何時使用其中一個?

忽然笑 2021-11-25 19:40:00
據說回調通過將回調函數的值(其函數定義)傳遞給“高階”函數的參數,在該參數中傳入并執行,從而為高階函數添加功能。似乎我們可以通過從另一個執行函數內部調用外部函數來完成同樣的事情。以下內容更好地說明了我想說的內容。// ************************ 使用回調 ************************ ****************************function A() { // this is the callback function    return 'hello';};function B(callback) { // this is considered a 'higher-order' function because it takes a                       // function definition as a parameter. the function definition of A                       // -- taken from A in Global memory -- is assigned to callback    var output = callback(); // we call callback and run it                             // the value of callback, is assigned to the variable output     console.log(output);    console.log("goodbye")};B(A); // logs 'hello' 'goodbye'// ******* 將上述與從另一個函數內部調用外部函數進行比較 *****function A() {     return 'hello';};function B() {    var output = A(); // we call function A, from inside function B,            // the value returned by A, is assigned to a variable inside B    console.log(output);    console.log("goodbye")};B(); // logs 'hello' 'goodbye'雖然兩者在返回值方面沒有區別,但它們的執行方式卻有所不同?;卣{函數接受 A 的函數定義并將其附加到一個名為回調的新名稱?;卣{被執行,并在回調的本地執行上下文中運行。將此與從 B 內部調用 A 時發生的情況進行比較,A 在其自己的本地執行上下文中執行。也許這個例子太簡單了,看不出這兩個之間的差異會幫助我理解什么時候使用一個而不是另一個。
查看完整描述

1 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

想象一下,B有時會傳遞A,但有時會傳遞名為C. 如果B直接調用一個函數,它只能調用那個函數。但是如果它傳遞了一個函數來調用,它可以調用它傳遞的任何函數:


function A() {

    return 'hello';

};


function C() {

    return 'Привет';

};


function B(callback) {

    var output = callback();


    console.log(output);

    console.log("goodbye")

};


B(A);

// => 'hello'

// => 'goodbye'

B(C);

// => 'Привет'

// => 'goodbye'

如果沒有回調,你就無法做到這一點。


真的,這就是為什么論證通常是強大的。將不同的參數傳遞給函數允許代碼以沒有它們(或等效機制)的方式動態化。


查看完整回答
反對 回復 2021-11-25
  • 1 回答
  • 0 關注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號