define (require) ->
return 'goodbye'
будет эквивалентно коду JavaScript
define(function(require) { return 'goodbye' })
То есть вызов функции define
с функцией в качестве первого (и единственного) аргумента.Вероятно, это не то, что вы ожидали от фрагмента, когда задавали свой вопрос.
Что-то, что я нашел очень полезным, когда я поиграл с CoffeeScript, это попробовать что-то в интерактивном диалоге «попробовать CoffeeScript» на сайт CoffeeScript .Это позволяет вам увидеть JavaScript, с которым скомпилирован данный фрагмент, и сразу увидеть, какой эффект, например, добавление скобок или изменение отступов, оказывает на полученный код JavaScript.Я определенно рекомендую сделать это.: -)
Изменить , чтобы отразить правку в вопросе:
Да, добавление скобок вокруг функции ((require) -> return 'goodbye'
) допустимо и не изменяетповедение.Однако обратите внимание, что "foo (bar)
" и "foo(bar)
" анализируются синтаксическим анализатором по-разному;в первом круглые скобки обозначают приоритет (приоритет, «обычные круглые скобки»), а во втором они являются круглыми скобками вызова функций.
«foo bar
», «foo(bar)
», «foo (bar)
» allсделать то же самое, но тогда как "foo bar, baz
" и "foo(bar, baz)
" работают нормально, "foo (bar, baz)
" является синтаксической ошибкой.