Stage One Modules, Functions and Types
Mastering the fundamentals of JavaScript pays huge dividends, as we start diving into the language features that are slightly newer and more complex.
- Duration: 270 minutes
JavaScript is flexible enough to do just about anything, and while this is one of its great strengths, it's also what makes best practices less clear. This deep dive into the fundamentals and latest advances in the language will help you learn how to make the most of it!
Mastering the fundamentals of JavaScript pays huge dividends, as we start diving into the language features that are slightly newer and more complex.
We'll dive deep into JavaScript data structures and control flow, touching on some new concepts and some old ones that you probably haven't used in a while.
JavaScript's internal event loop and the fact that all the code we write is "non-blocking" allows it to keep track of tons asynchronous processes while still operating on a single thread. We'll look at some low-level patterns for managing asynchrony and concurrency, then build all the way up to modern language features like async and await.
With the ES2015 version of the JavaScript specification came several new data structures like Map, Set, WeakMap, WeakSet and Proxy. We’ll look at the motivations for adding these features to the language and get hands-on experience solving some problems that would be much more difficult were it not for these new constructs.
The controversy around class stems from the illusion of removing prototypal inheritance from JavaScript. It is, in fact, just syntactic sugar on top of the same prototypes we’ve been using all along. However, in removing some of the noise that typically accompanies object-oriented JavaScript, and in making some typical traps more difficult to fall into, using classes can result in more readable and robust code.
Improved performance almost always correlates to improvements in key business metrics. We’ll look at JavaScript performance from all angles, including shrinking and simplifying your production builds, figuring out when your code is de-optimized in modern javascript runtimes and more!