CoffeeScript uses function declarations (aka “named functions”) in just one place: class
definitions. For instance,
class Foo
compiles to
var Foo;
Foo = (function() {
function Foo() {}
return Foo;
})();
The reason CoffeeScript doesn’t use function declarations elsewhere, according to the FAQ:
Blame Microsoft for this one. Originally every function that could have a sensible name retrieved for it was given one, but IE versions 8 and down have scoping issues where the named function is treated as both a declaration and an expression. See this for more information.
In short: Using function declarations carelessly can lead to inconsistencies between IE (pre-9) and other JS environments, so CoffeeScript eschews them.