According to the StackOverflow 2021 survey, JavaScript remains the #1 programming language in the world and is widely employed in 95% of all websites. You should know many things to blossom and flourish in the JS universe. We’re, of course, not going to list all of them — however, it would be nice and handy to elaborate on the main concepts that help both noob coders and apt engineers in their daily programming life.  Scope. The concept of scope is linked to the variable access and the question of which variables you have access to while the code runs. The scope can be imagined as a virtual box with variables, functions, and objects. This box of scope has boundaries and restrictions that allow or block your access to the necessary elements. Local scope is everything within certain boundaries, and global scope is outside. So, if a variable is local, you don’t have access to it globally, and vice versa. IIFE — Immediately Invoked Function Expression. It’s a function evoked and executed right after it was defined. The main point of the use of IIFE is immediate execution and data privacy enhancement. Hoisting. In JS, one can call a function before its defining — precisely thanks to hoisting. By hoisting, we understand that the JS interpreter always moves the variables and functions to the top of the current scope before code execution.  Closure. A closure is a function inside another function and has access to the variable used in the outer function. Watch the magic: the outer function has no access to the inner function variables, but thanks to closures, the inner one has access to the outer function's variables.  Callback. It’s a function passed to another function as a parameter (the latter function must wait for the former to execute). Callbacks are used for maintaining synchronous capabilities. Promise. A promise is a salvation from the so-called callback hell occurring when the recursive callback structure (a callback inside a callback, etc.). A promise is an object that may produce a single value in the future — or a reason why the value isn’t resolved. Async&await. One more way to perform asynchronous operations more synchronously. It can be used to perform the Rest API request where you want data to be fully downloaded before transposing it to the view.