Coffeescript ---如何创建一个自启动的匿名函数?

时间:2011-04-09 13:23:08

标签: javascript javascript-framework coffeescript

如何在coffeescript中写这个?

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

感谢您的任何提示:)

8 个答案:

答案 0 :(得分:160)

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

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

do最常见的用途是在循环中捕获变量。例如,

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

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

答案 1 :(得分:19)

如果你想在CoffeeScript中“传递”传递给自调用函数的参数,让我们说这就是你想要实现的:

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

然后do (window, document) ->不允许你这样做。接下来的方法是使用parens:

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

答案 2 :(得分:15)

咖啡很容易上瘾:

do ->

将返回

(function() {})();

答案 3 :(得分:5)

尝试使用

do ($ = jQuery) ->

答案 4 :(得分:5)

您还可以将do关键字与默认函数参数结合起来,以种子递归"自启动函数"具有初始值。例如:

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

答案 5 :(得分:3)

do ->
    #your stuff here

这将创建一个自执行闭包,这对于作用域非常有用。

答案 6 :(得分:1)

抱歉,我解决了这个问题:

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

答案 7 :(得分:0)

应该是

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^modulos\/(.*)\/(.*)$ index.php?action=%1&id%2
</IfModule>