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