Scope
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 a function .
In addition, variables declared with
let
or
const
can belong to an additional scope:
- Block scope: The scope created with a pair of curly braces (a block ).
A function 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 error
However, 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 scope let
and const
declarations, but not var
declarations.
{
var
x =
1
;
}
console.
log
(
x)
;
// 1
{
const
x =
1
;
}
console.
log
(
x)
;
// ReferenceError: x is not defined
See also
- Scope (computer science) on Wikipedia