1. Original value and reference value (value vs. Reference)
Understand how objects, arrays, and functions are copied and passed into a function. Understand what the reference value is copied, and understand that the original value is copied and passed by copying the value.
2. Domain (SCOPE)
Understand the differences between global domains, function domains, and block-level scopes. Learn where variables are available and how the JavaScript engine performs variable lookups.
3. Lifting (hoisting)
Recognize that declarations of variables and functions are promoted to the context in which they are declared, that is, within the scope of a variable, regardless of where the variable is declared, it is promoted to the top of the scope, but the order of the variable initialization is constant. Recognize that function expressions are not promoted.
4. Closures (Closures)
Recognize that a function retains access to the domain created inside it, recognizing what these can do for us, such as data hiding, memory, and dynamic function generation.
5. this
Understand the rules for this binding. Know how it works, know how to judge it in a function, and recognize why it is useful.
6. New
Recognize how it relates to object-oriented programming. Learn what happens to functions that are called through new. Understand how the inherited objects from the function prototype property are generated by using new.
7. Apply, call, bind
Learn how these functions work and learn how to use them. Learn what they do to this.
8. Prototypes and Inheritance (Prototypes & Inheritance)
Understand that inheritance in JavaScript works through the [[Prototype]] chain. Understand how inheritance is set through functions and objects, and how new is helping us to achieve it. Learn what the __proto__ and prototype properties are and what they do.
9. Asynchronous JS (asynchronous JS)
Understand the event loop to understand how the browser handles user input, Web requests, and general events. Know how to recognize and implement asynchronous code correctly. Understand how asynchronous and single threading are in JavaScript.
10. Higher order function (higher order Functions)
Understanding that these functions are the first class of objects in JavaScript and what this means is that it is perfectly legal to return a function from another function. Learn about the techniques that closures and higher-order functions allow us to use.
10 Concepts A JavaScript developer should know