谁反对了?
匿名函数的缺点是不便于后续的检索和识别(大部分匿名函数合理的使用场景也没有这种需求),不过这一点在ES6有了改善,ES6的每个函数都有一个name属性,方便辨别。
只是某些情况下使用匿名函数不合理,一棍子全打死是不对的。
<code class="language-text">http.createServer(function(req, res) {
// do something...
});
</code>
缺点就是。。匿名函数的事件。。不能解绑。。。
起名字真的是个头疼的问题
为函数注册事件的时候不要用 匿名函数,,,,,
不然 你就不能解绑了。
当然,如果你用的是框架,框架会帮你解决。
匿名函数不适合使用的场景之一就是调试,
比如说在nodejs中,你追踪某个语句出错的使用,使用TJ写的调试插件,就会直接告诉你是哪个函数出了问题,如果函数有名字,直接显示名字,但是没有名字,就直接写anonymous
还有一个场景是回调只用一次的场景,一般用onlyOnce包装好,如果调用第二次,会显示是哪个函数出了错,这个是async改进过的地方
在windows Asure提供的nodejs包中,你会发现所有的原型方法对应的函数上都加了原型方法名
joyent推荐多使用有名字的短小并且精干的函数
joyent并不鼓励使用闭包,如果程序变大了,堆栈跨域调用的层数增加,维护起来会很吃力,而闭包的显著特点之一就是匿名回调
存在即合理,如楼上所说,谁反对了?