Learn JavaScript Essentials
(for all skill levels)
by Eric Elliott
One Clear Path
There are so many JavaScript resources available out there, it’s hard to understand how much of it overlaps and how much is redundant. Not to mention the process of weeding out bad information. The fact is, most JavaScript training sucks.
There are many possible paths, several good paths, but few great paths.
Here is one clear path to JavaScript mastery:
Why JavaScript?
JavaScript is the standard language of the web platform. Learning it will allow you to build any app you want for any device or platform you want. Watch this 1 minute video to learn more about what JavaScript can do for you:
The essentials, in order:
- Newbie friendly: Make a Star Wars Game with Hour of Code (free website)
- Newbie friendly: “JavaScript for Cats”, Max Ogden (free website)
- Newbie friendly: FreeCodeCamp’s 10-hour Basic JavaScript track You can come back to FCC for more practice after you’ve checked out the rest of these resources. There are hundreds of hours of exercises, in total.
- “Learn JavaScript with Eric Elliott”, disclaimer: I’m Eric Elliott (online courses, includes detailed screencasts on ES6, React, TDD, and more…)
- “Programming JavaScript Applications”, Eric Elliott (book, free online, print & ebooks available)
- “The Two Pillars of JavaScript Part 1” on Prototypal OO, Eric Elliott (article, free)
- “The Two Pillars of JavaScript Part 2” on Functional Programming (article, free)
- “Eloquent JavaScript: Second Edition”, Marijn Haverbeke (book with free online edition)
- “JavaScript: The Good Parts”, Douglas Crockford (book)
- “JavaScript: The Definitive Guide”, David Flanagan
- “Essential JavaScript Links”
On ES6
ES6/ES2015 is the current JavaScript standard, but most of the existing learning resources are written for an older version of JavaScript. In the meantime, all the new blog posts and tutorials are written for ES6, and if you’re building new apps, you should be doing so using ES6. Read “How to Learn ES6” to get up to speed.
On JavaScript Modules
The largest package repository in the world (for any programming language) is npm, or node packaged modules. It’s the package manager that comes with Node.js, but it’s also widely used for client-side modules using solutions like Browserify.


ES6 is the current standard, and you can use ES6 modules with npm + Browserify. My current recommendation for production is to use ES6 modules — both in Node and in the browser. To learn how, read “How to use ES6 for Universal JavaScript Apps”.
Classes vs Prototypes
Most JS books will teach you how to implement classical inheritance in JavaScript. Watch this video to learn why classical inheritance should be avoided in JavaScript, and how to put prototypal inheritance to work for you:
Extra credit: