Probably one of the few real issues I see with coffeescript is the parenthesis omition making it hard to understand what the code unless if you're very familiar with the rules of the compiler.
foo = (a) -> a + 1
foo foo 1, 2Turns into this:
var foo;
foo = function() {};
foo(foo(1, 2));You can also get some odd syntax such as this:
foo 1, 2, a: 2, b: 2Which will turn into the following:
foo(1, 2, {
a: 2,
b: 2
});The solution is pretty simple; if you want to use coffeescript on a project but don't like how you can omit parens you can just prevent people from doing so by changing some options in coffeelint.