use*_*339 86 javascript javascript-framework coffeescript
如何在coffeescript中写这个?
f = (function(){
// something
})();
Run Code Online (Sandbox Code Playgroud)
谢谢你的任何提示:)
Tre*_*ham 160
虽然您可以使用括号(例如(-> foo)()
,您可以通过使用do
关键字来避免它们:
do f = -> console.log 'this runs right away'
Run Code Online (Sandbox Code Playgroud)
最常见的用途do
是在循环中捕获变量.例如,
for x in [1..3]
do (x) ->
setTimeout (-> console.log x), 1
Run Code Online (Sandbox Code Playgroud)
没有do
,你只需要x
在循环后打印3次的值.
Mis*_*lin 19
如果你想在CoffeeScript中"传递"传递给自调用函数的参数,让我们说这就是你想要实现的:
(function ( global, doc ) {
// your code in local scope goes here
})( window, document );
Run Code Online (Sandbox Code Playgroud)
然后do (window, document) ->
不会让你这样做.接下来的方法是使用parens:
(( global, doc ) ->
# your code here
)( window, document )
Run Code Online (Sandbox Code Playgroud)
mar*_*ini 16
这在咖啡中很容易:
do ->
Run Code Online (Sandbox Code Playgroud)
将返回
(function() {})();
Run Code Online (Sandbox Code Playgroud)
Xåp*_* - 5
您还可以将do
关键字与默认函数参数组合,以使用初始值为递归"自启动函数"设定种子.例:
do recursivelyPrint = (a=0) ->
console.log a
setTimeout (-> recursivelyPrint a + 1), 1000
Run Code Online (Sandbox Code Playgroud)