Coffeescript – 如何创build一个自发的匿名函数?

如何写在咖啡的脚本?

f = (function(){ // something })(); 

感谢您的任何提示:)

虽然你可以使用圆括号(例如(-> foo)() ,但是可以使用do关键字来避免它们:

 do f = -> console.log 'this runs right away' 

do最常见的用法是在循环中捕获variables。 例如,

 for x in [1..3] do (x) -> setTimeout (-> console.log x), 1 

如果没有,你只需要在循环3次后打印x的值。

如果你想在CoffeeScript中传递给自调用函数的参数“别名”,假设这是你正在尝试实现的:

 (function ( global, doc ) { // your code in local scope goes here })( window, document ); 

然后do (window, document) ->不会让你这样做。 然后,路线是与parens:

 (( global, doc ) -> # your code here )( window, document ) 

这在咖啡中很容易:

 do -> 

将返回

 (function() {})(); 

您还可以将do关键字与缺省函数参数结合起来,以初始值为recursion“自启动函数”播种。 例:

 do recursivelyPrint = (a=0) -> console.log a setTimeout (-> recursivelyPrint a + 1), 1000 

尝试使用

 do ($ = jQuery) -> 
 do -> #your stuff here 

这将创build一个自我执行的闭包,这对于范围界定非常有用。

道歉,我解决了它:

 f = ( () -> "something" )() 

它应该是

 f = () -> # do something