Javascript 返回匿名函数

Javascript 返回匿名函数,javascript,Javascript,您能解释一下为什么下面doctor1函数中的返回函数比doctor 2中的返回函数更好吗 /--------------医生1-------------------------- 函数doctor1(){ 返回函数(){alert(“你好吗,今天?”);}; } var x=doctor1(); x(); //-----------------医生2-------------------------- 函数doctor2(){ 返回警报(“今天你好吗?”); } 博士2(); //------

您能解释一下为什么下面doctor1函数中的返回函数比doctor 2中的返回函数更好吗

/--------------医生1--------------------------
函数doctor1(){
返回函数(){alert(“你好吗,今天?”);};
}
var x=doctor1();
x();
//-----------------医生2--------------------------
函数doctor2(){
返回警报(“今天你好吗?”);
}
博士2();

//-------------------------------------------
在您的特定情况下,这并没有真正的区别。但是,如果要创建保留某些状态的函数(即创建闭包),则返回函数可能会很有用:

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]();
}

这样命名函数在调试时会有所帮助。如果函数抛出错误,您将在控制台中看到函数名。

您所说的更好是什么意思的可能重复?@destoryer,我的意思是哪一个是正确的,或者在某些情况下您希望使用其中一个而不是另一个!谢谢你的帮助。如果您不介意,那么当我提醒函数数组时,num没有被指定的数字替换?如果您这样做
alert(functions)
您将看到函数的文本。但是如果你做了
console.log(functions)
并打开你的开发工具,你可以深入研究每个函数,一些浏览器会向你展示闭包(在Chrome上对我有用)。因此,您可以实际看到函数所包含的数字(如0、1或2)。@Aseel我编辑了我的答案,以进一步澄清返回的函数不必是匿名的。
function doctor1(num) {
  return function myFunc() { alert("How are you, today? " + num); };
}