As a language, JavaScript receives more than its fair share of criticism. Its default global variables, prototypical inheritance, and dynamic typing are often considered flaws that can lead to sloppy ...