之间有什么区别
settings = {
edit: function (key, value) {
return anotherFunction(key, value) {
return value * 2;
};
}
};
和
settings = {
edit: function edit(key, value) {
return anotherFunction(key, value) {
return value * 2;
};
}
};
答案 0 :(得分:3)
执行时没有区别。
但是,在第二种情况下(命名函数),你可以更容易地调用函数,因为它有一个名字。
例如,使用命名函数,您可以执行以下操作:
fact: function factorial(n) {
if(n == 0) return 1;
return n * factorial(n-1); //You can do this with a named function easily
}
没有名字,这将是棘手的。
干杯
答案 1 :(得分:1)
本质区别在于更好的调试。在您的开发人员工具中,第二个示例中的命名函数将在回溯中显示为edit
;您的第一个示例将显示为anonymous
。如果您的功能很深,那么这可能会非常混乱,并且它们全部称为anonymous
。
答案 2 :(得分:0)
给函数一个固有名称有三个理由。首先是每个人都这样做。这是每个人都习惯的。
function factorial(n) {
var accum = 1, i;
for (i = 1; i <= n; i++) {
accum *= i;
}
return accum;
}
第二个是更好地理解堆栈跟踪,正如@meagar所写。
第三是让你递归地编写调用函数。
var factorial = function(n) {
var a = 1;
return (function factRecursive(k, a) {
if (k >= 2) {return factRecursive(k - 1, k * a)}
else {return a;}
})(n, a);
}