javascript中的命名函数与非命名函数有什么区别?

javascript中的命名函数与非命名函数有什么区别?,javascript,syntax,Javascript,Syntax,两者的区别是什么 settings = { edit: function (key, value) { return anotherFunction(key, value) { return value * 2; }; } }; 及 ?本质区别在于更好的调试。在开发人员工具中,第二个示例中的命名函数将在回溯中显示为edit;您的第一个示例将显示为匿名。当你有10个函数深度时,这可能会非常混乱,它们都被称为匿名本质上的区别是更好的调试。在开发人员工具中,第二个

两者的区别是什么

settings = {
  edit: function (key, value) {
    return anotherFunction(key, value) {
      return value * 2;
    };
  }
};


本质区别在于更好的调试。在开发人员工具中,第二个示例中的命名函数将在回溯中显示为
edit
;您的第一个示例将显示为
匿名
。当你有10个函数深度时,这可能会非常混乱,它们都被称为
匿名

本质上的区别是更好的调试。在开发人员工具中,第二个示例中的命名函数将在回溯中显示为
edit
;您的第一个示例将显示为
匿名
。当您的函数深度为10时,这可能会非常混乱,并且它们都被称为
匿名

执行时没有区别

但是,在第二种情况下(命名函数),可以更轻松地递归调用该函数,因为它有一个名称

例如,使用命名函数,您可以执行以下操作:

fact: function factorial(n) {
     if(n == 0) return 1;
     return n * factorial(n-1);   //You can do this with a named function easily
  }
如果没有名字,这会很棘手


干杯

执行时没有区别

但是,在第二种情况下(命名函数),可以更轻松地递归调用该函数,因为它有一个名称

例如,使用命名函数,您可以执行以下操作:

fact: function factorial(n) {
     if(n == 0) return 1;
     return n * factorial(n-1);   //You can do this with a named function easily
  }
如果没有名字,这会很棘手


干杯

给函数取一个固有名称有三个原因。首先,每个人都这样做。这是每个人都习惯的

function factorial(n) {
    var accum = 1, i;
    for (i = 1; i <= n; i++) {
        accum *= i;
    }
    return accum;
}

为函数指定固有名称有三个原因。首先,每个人都这样做。这是每个人都习惯的

function factorial(n) {
    var accum = 1, i;
    for (i = 1; i <= n; i++) {
        accum *= i;
    }
    return accum;
}

您可以在第二个函数bodyCheckout中引用自身可能的重复项您可以在第二个函数bodyCheckout中引用自身可能的重复项这是一个非常好的观察结果。我正试图分析Ghost.js以了解节点应用程序是如何工作的,这可能是命名函数的最佳原因。确实如此。每个谈论递归的人都没有抓住要点。递归不需要命名函数,只需要引用函数的变量。您仍然可以通过这种方式递归调用匿名函数。这是一个非常好的观察结果。我正试图分析Ghost.js以了解节点应用程序是如何工作的,这可能是命名函数的最佳原因。确实如此。每个谈论递归的人都没有抓住要点。递归不需要命名函数,只需要引用函数的变量。您仍然可以通过这种方式递归调用匿名函数。呃,如果没有名称,这将非常简单:
this.fact()
。你可以很容易地调用一个函数而不给它命名:
var x=function(){x()}
@meagar如果函数不是对象的一部分呢?
var x=function(){x()}
在本例中是
回调函数(函数f(n){f(…);})使用命名函数更容易(其他选项更难)“更”容易是相当主观的
f=function(){返回f(…);};撤回(f)错误,如果没有名字,这将非常简单:
this.fact()
。你可以很容易地调用一个函数而不给它命名:
var x=function(){x()}
@meagar如果函数不是对象的一部分呢?
var x=function(){x()}
在本例中是
回调函数(函数f(n){f(…);})使用命名函数更容易(其他选项更难)“更”容易是相当主观的
f=function(){返回f(…);};撤回(f)