如何在coffeescript中写这个?
f = (function(){
// something
})();
感谢您的任何提示:)
答案 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>