Execution Contexts, Hoisting, Scopes, and Closures
Execution Contexts, Hoisting, Scopes, and Closures are fundamental concepts in JavaScript programming language.
Screenshot from https://ui.dev/ course and it were called βTylerβ
- Context refers to the
**this**
keyword, which is always the first parameter that can be received by a function with the**bind**
method. If it is not received, it will look for it in its parent, until it reaches the**window**
object. If it cannot be found, it will throw an error. - Hoisting is the process of declaring a variable before it is used in the code.
- Scope refers to the range of accessibility of a function or a variable.
Closures
Closures are created when a function is defined inside another function. The inner function creates a closure with its parent function.
When a program starts, the **window**
object is created, along with the **this**
keyword that references the **window**
, and the functions and variables that exist.
When a function is called, a function context is created. Instead of creating the **window**
object, the **arguments**
object is created. If a function or an arrow function is used, a different context is created.
Functions have a scope, and a function inside another function is a closure.
- Context refers to the
**this**
keyword, which is the first parameter that can be received by a function. If it is not received, it will look for it in its parent, until it reaches the**window**
object. If it cannot be found, it will throw an error. - Hoisting is the process of declaring a variable before it is used.
- Scope is the range of accessibility of a function or a variable.
- Closures occur when a function is created inside another function. The inner function creates a closure with its parent function.
When a program is initiated, the
**window**
object is created, along with the**this**
keyword that references the**window**
, and the functions and variables that exist. When a function is called, a function context is created. Instead of creating the**window**
object, the**arguments**
object is created. If a function or an arrow function is used, a different context is created. Functions have a scope and a function inside another function is a closure.