Scope – MDN Web Docs Glossary: Definitions of Web-related terms | MDN

The scope is the current context of execution in which values and expressions are “visible” or can be referenced. If a variable 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 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"

;

console

.

log

(

"Inside function"

)

;

console

.

log

(

x

)

;

}

console

.

log

(

x

)

;

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

)

;

{

const

x

=

1

;

}

console

.

log

(

x

)

;