[英]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.