有没有办法不使用CoffeeScript返回的东西?

看起来CoffeeScript自动返回范围中的最后一个项目。 我可以避免这个function吗?

你不得不明确地返回任何东西,或者让函数底部的expression式评估为undefined:

fun = -> doSomething() return 

要么:

 fun = -> doSomething() undefined 

在使用理解时,这是文档build议的内容:

要小心的是,在这些情况下,你不会意外返回理解的结果,在函数的底部 添加一个有意义的返回值 – 比如true或null。


不过,你可以写一个这样的包装:

 voidFun = (fun) -> -> fun(arguments...) return 

(注意这里的splat操作符 ( ... ))

在定义函数时使用它:

 fun = voidFun -> doSomething() doSomethingElse() 

或者像这样:

 fun = voidFun(-> doSomething() doSomethingElse() ) 

是的, return作为函数的最后一行。

例如,

 answer = () -> 42 extrovert = (question) -> answer() introvert = (question) -> x = answer() # contemplate about the answer x return 

如果您想查看咖啡编译的内容,请尝试http://bit.ly/1enKdRl 。 (我用coffeescript redux为例)

只是有趣的(ctional)

 suppressed = _.compose Function.prototype, -> 'do your stuff' 

Function.prototype本身是一个总是不返回的函数。 你可以使用compose来将你的返回值传递给这个黑洞,而组合的函数将永远不会返回任何东西。

 longRunningFunctionWithNullReturn = -> longRunningFunction() null 

看来CoffeeScript中的函数必须总是返回一些东西,甚至是null 。 在C中,你有void作为返回types。 -> ,空函数编译为(function() {}) ,所以它是唯一不返回任何东西的函数。