Javascript patterns
Regarding function declarations, it considers function declarations to be an antipattern and advises you to instead use function expressions at all times (<a href="https://github.com/shichuan/javascript-patterns/blob/master/general-patterns/function-declarations.html" rel="nofollow">https://github.com/shichuan/javascript-patterns/blob/master/...</a>).<p>I'm really skeptical about this. Using function expressions has some quite subtle consequences (hoisting, accidental/unintended closures) which you automatically avoid when using function declarations. Function declarations are also very useful since they allow you to use the function before it is defined (in the code), which mean you can read the code (and use the function name as an abstraction) without having to scroll past all function implementations.<p>To expand a bit on the accidental closures part, a variable bound by a closure is an implicit dependency of that function. By breaking function expressions out as function declarations you can be more explicit about what kind of input that piece of code needs from the outside. I just think overuse (nesting etc.) of closures can lead to some quite messy code, it gets harder to reason about when a variable was actually bound and to what.