JavaScript is that language that you need to know in order to build applications that work across the platforms and knowing about the JSfrom the point of the language specification is really important.
In this course, we will cover the most neglected topic in JavaScript which is Scopes. The course is heavily inspired by Chapter 8 of the ECMAScript Specification. Although the spec talks about Execution context, Agents, Job, Executing Context Stack, et al, however in this course, we will stick closer to the lexical environment and its subparts.
Scopes system is one of the strongest pillars of JavaScript. Scopes not only touch the execution phase but it starts from the code authoring and extends its root in the compilation phase.
The course discusses every detail of how the scope is created and how does JavaScript engine deals with the code structure to come up with a blueprint which is then handed over to theExecution Engine. We will go in-depth in understanding how our program is processed by the compiler and what steps lead to the creation of scope.
We will cover the fundamentals of code patterns that help us create a better-organized code. We will look at how function-expression, function-declaration, blocks, modules, and scripts are part of the scope system. We will cover in-depth detail of how and why immediately invoked function expressions (IIFE) works. We will also look at hoisting and by the time we reach here, you would have already understood why hoisting is something, that it actually is not.
Finally, we will look at the essential ES6 feature i.e. let, const, and var, and understand why their behavior and what are the effects of using one over the other. What you will learn in this course will make you a stronger JavaScript developer, improve your abilities in writing solid JavaScript code and it will lead you to understand some of the advanced concepts of JavaScriptlike closures, higher-order functions, and module pattern.