When Function Parentheses Are Not Optional
Problem
You want to call a function that takes no arguments, but don’t want to use parentheses.
Solution
Use parentheses anyway.
Another alternative is to utilize the do-notation like so:
This compiles to the following JavaScript:
Discussion
Like Ruby, CoffeeScript allows you to drop parentheses to method calls. Unlike Ruby, however, CoffeeScript treats a bare function name as the pointer to the function. The practical upshot of this is that if you give no arguments to a method, CoffeeScript cannot tell if you want to call the function or use it as a reference.
Is this good or bad? It’s just different. It creates an unexpected syntax case – parentheses aren’t always optional – but in exchange it gives you the ability to pass and receive functions fluently by name, something that’s a bit clunky in Ruby.
This usage of the do-notation is a neat approach for CoffeeScript with parenphobia. Some people simply prefer to write out the parentheses in the function call, though.