CoffeeScript命名lambda

时间:2014-05-05 22:05:59

标签: javascript lambda coffeescript

在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中的一个大错误。

2 个答案:

答案 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