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)代码>