繁体   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