86

これをcoffeescriptでどのように書くのですか?

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

ヒントをありがとう:)

4

8 に答える 8

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

于 2011-04-09T19:50:02.840 に答える
19

CoffeeScript で自己呼び出し関数に渡される引数を「エイリアス」したい場合、これが達成しようとしているとしましょう:

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

それdo (window, document) ->ならさせてくれない。行く方法は、括弧を使用することです:

(( global, doc ) -> 
  # your code here
)( window, document ) 
于 2011-10-12T06:45:07.430 に答える
16

それはコーヒーでばかげて簡単です:

do ->

戻ります

(function() {})();
于 2014-07-10T07:01:08.513 に答える
5

使ってみてください

do ($ = jQuery) ->
于 2013-11-19T11:27:08.677 に答える
5

キーワードをデフォルトの関数パラメーターと組み合わせて、do再帰的な「自己開始関数」に初期値をシードすることもできます。例:

do recursivelyPrint = (a=0) ->
  console.log a
  setTimeout (-> recursivelyPrint a + 1), 1000
于 2014-06-05T15:18:54.857 に答える
3
do ->
    #your stuff here

これにより、スコーピングに役立つ自己実行クロージャーが作成されます。

于 2015-02-05T22:23:59.290 に答える
1

申し訳ありませんが、私はそれを解決しました:

f = (
    () -> "something"
)()
于 2011-04-09T13:32:20.390 に答える
0

そのはず

f = () ->
  # do something
于 2016-06-15T03:01:34.753 に答える