簡體   English   中英

返回匿名函數

[英]Return Anonymous Function

您能解釋一下為什么在Doctor1功能下面的返回功能會比在Doctor2中的返回功能更好嗎?

 //-----------------Doctor 1-------------------------- function doctor1() { return function() { alert("How are you, today?"); }; } var x = doctor1(); x(); //-----------------Doctor 2-------------------------- function doctor2() { return alert("How are you, today?"); } doctor2(); //------------------------------------------- 

在您的特定情況下,並沒有什么不同。 但是,如果您想創建保留某些狀態的函數(即創建閉包),則返回一個函數可能會很有用:

function doctor1(num) {
  return function() { alert("How are you, today? " + num); };
}

var functions = [];

for (var i = 0; i < 3; i++) {
    functions.push(doctor1(i));
}

// The functions "remember" the values 0, 1, and 2 
for (var i = 0; i < functions.length; i++) {
    functions[i]();
}

順便說一下,您的doctor2函數不需要return語句,因為alert不會返回任何東西。

編輯:我想澄清一下,您返回的函數不必是匿名的:

function doctor1(num) {
  return function myFunc() { alert("How are you, today? " + num); };
}

像這樣命名函數可以在調試時提供幫助。 如果函數拋出錯誤,您將在控制台中看到函數名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM