我在这里使用firebug,试图写一篇博文来展示像这些代码一样的东西。
// Unnamed Anonymous Function
var count1 = function () {
var x = 0, f;
f = function () {
x = x + 1;
return x;
};
return f;
};
// Named Anonymous Function
var count2 = function cf() {
var x = 0, f;
f = function ff() {
x = x + 1;
return x;
};
return f;
};
var c = count1();
console.log(count1); // function()
console.log(c); // function()
var d = count2();
console.log(count2); // cf()
console.log(d); // ff()
关键是,firebug将匿名函数记录为function()
,甚至您单击它导航到脚本选项卡的链接,但有时位置错误,您的匿名函数不是'那里。
但如果您将其命名为cf()
或ff()
,则可以轻松回忆它的功能。
在此示例中,代码很短,但如果您在大规模应用程序中工作,例如在ASP.net Web窗体脚本资源中,函数命名可能会以某种方式节省您的调试时间吗?
P.S。我更喜欢函数表达而不是函数声明。
答案 0 :(得分:1)
命名函数表达式非常适合调试,请注意它们可能会导致旧版Internet Explorer出现问题,所以要小心。
This article详细介绍了所有细节,但简短的版本是IE中的NFE最终会被提升,就像它们是函数声明一样,导致你必须以你不应该的方式清理:
var f = (function(){
var f, g;
if (true) {
f = function g(){};
}
else {
f = function g(){};
}
// null `g`, so that it doesn't reference extraneous function any longer
g = null;
return f;
})();