在JavaScript中,您可以命名lambda函数
(function() {
...
}).call()
doSomething(param1, param2, function() {
...
});
像
(function main() {
...
}).call()
doSomething(param1, param2, function callback() {
...
});
所以它们不是匿名的,并且错误跟踪对程序员来说变得更加清晰 - 特别是对Node.js有用以避免(或至少理解)回调地狱。
我目前正在研究CoffeeScript,试着看看它是否能让我的编码更清晰/更快,但无法绕过命名抛弃这些功能。
(->
...
).call()
doSomething param1, param2, ->
...
有没有办法在CoffeeScript中命名这些函数?虽然不重要,但我认为这是CS中的一个大错误。
答案 0 :(得分:1)
我从here得到了答案。
基本上,你不能这样做 - CoffeeScript不允许命名函数。他们说这是因为IE9的兼容性,但如果你真的不关心它呢? (来吧,即使是低信息用户现在也知道IE8及更低版本不适合使用,而且我个人认为这些浏览器与Win XP一起死亡。)
回到答案,CoffeeScript只接受函数表达式,而不是声明 - 这意味着我不能命名lambda函数,除非我将它赋值给var并稍后将其作为参数传递。
答案 1 :(得分:0)
常见问题解答中讨论:Q: Is there any way to name functions, for reflection and recursion?
https://github.com/jashkenas/coffee-script/wiki/FAQ
它列出了许多相关的存储库问题,包括: https://github.com/jashkenas/coffee-script/issues/366