標準の関数定義は次のように構成されています。
name = (arg, ...) ->
body
times
ですから、あなたの定義について言うことはあまりありません。だから私たちはあなたの呼び出しを見てみましょうtimes
:
times 5, (index) ->
console.log index
この部分:
(index) ->
console.log index
は単なる別の関数定義ですが、これは匿名です。名前付き関数を使用して呼び出しを書き直し、次のことを明確にすることができます。
f = (index) -> console.log index
times 5, f
そして、オプションの括弧を入力して、実際にそれを詳しく説明することができます。
f = (index) -> console.log(index)
times(5, f)
すべてが分解されると、次のように表示され5
ます(index)
。
times 5, (index) ->
console.log index
互いに関係がないので、括弧でグループ化します。
times (5, (index)) ->
console.log index
意味がありません。構造を明確にするためにその呼び出しに括弧を追加したい場合times
(これはコールバック関数が長い場合に非常に便利です)、2つのことを知っておく必要があります。
- 関数名と引数の前後の開き括弧の間にスペースはありません。スペースがある場合、CoffeeScriptは、引数リスト内で物事をグループ化するために括弧を使用していると見なします。
- 括弧は引数リスト全体を囲む必要があり、これにはコールバック関数の本体が含まれます。
それを与える、あなたは書くだろう:
times(5, (index) ->
console.log index
)
多分:
times(5, (index) -> console.log(index))
を使用console.log
すると、次のような非ネイティブ関数を使用することもできます。
times(5, console.log)
TypeError
しかし、それはいくつかのブラウザであなたに与えるでしょう、それでそこまで行かないでください。