Scope
Thescope is the current context of execution in whichvalues and expressions are "visible" or can be referenced. If avariable or expression is not in the current scope, it will not be available for use. Scopes can also be layered in a hierarchy, so that child scopes have access to parent scopes, but not vice versa.
JavaScript has the following kinds of scopes:
- Global scope: The default scope for all code running in script mode.
- Module scope: The scope for code running in module mode.
- Function scope: The scope created with afunction.
In addition, identifiers declared with certain syntaxes, includinglet,const,class, or (in strict mode)function, can belong to an additional scope:
- Block scope: The scope created with a pair of curly braces (ablock).
Afunction creates a scope, so that (for example) a variable defined exclusively within the function cannot be accessed from outside the function or within other functions. For instance, the following is invalid:
function exampleFunction() { const x = "declared inside function"; // x can only be used in exampleFunction console.log("Inside function"); console.log(x);}console.log(x); // Causes errorHowever, the following code is valid due to the variable being declared outside the function, making it global:
const x = "declared outside function";exampleFunction();function exampleFunction() { console.log("Inside function"); console.log(x);}console.log("Outside function");console.log(x);Blocks only scopelet andconst declarations, but notvar declarations.
{ var x = 1;}console.log(x); // 1{ const x = 1;}console.log(x); // ReferenceError: x is not definedIn this article
See also
- Scope (computer science) on Wikipedia
- Block scoping rules