El alcance (
scope
) determina la accesibilidad (visibilidad) de las variables. JavaScript tiene 3 tipos de alcance:
Alcance del bloque
Alcance de la función
Alcance global
Alcance del bloque
Antes de ES6 (2015), JavaScript solo tenía alcance global y alcance de función.
ES6 introdujo dos nuevas palabras clave importantes de JavaScript: let
y const
.
Estas dos palabras clave proporcionan Block Scope en JavaScript.
No se puede acceder a las variables declaradas dentro de un bloque { }
desde fuera del bloque:
{
let x = 2;
}
// x NO puede usarse aquí
Las variables declaradas con la palabra clave var
NO pueden tener alcance de bloque.
Se puede acceder a las variables declaradas dentro de un bloque { }
desde fuera del bloque.
Ejemplo:
{
var x = 2;
}
// x PUEDE usarse aquí
Alcance local
Las variables declaradas dentro de una función de JavaScript se vuelven LOCALES para la función.
Ejemplo:
// el código aquí NO puede usar carName
function myFunction() {
let carName = "Volvo";
// el código aquí PUEDE usar carName
}
// el código aquí NO puede usar carName
Las variables locales tienen alcance de función:
Solo se puede acceder a ellos desde dentro de la función.
Dado que las variables locales sólo se reconocen dentro de sus funciones, las variables con el mismo nombre se pueden utilizar en diferentes funciones.
Las variables locales se crean cuando se inicia una función y se eliminan cuando se completa la función.
Alcance de la función
JavaScript tiene alcance de función: cada función crea un nuevo alcance.
Las variables definidas dentro de una función no son accesibles (visibles) desde fuera de la función.
Las variables declaradas con var
, let
y const
son bastante similares cuando se declaran dentro de una función.
Todos ellos tienen alcance de función:
function myFunction() {
var carName = "Volvo"; // Alcance de función
}
function myFunction() {
let carName = "Volvo"; // Alcance de función
}
function myFunction() {
const carName = "Volvo"; // Alcance de función
}
Variables globales de JavaScript
Una variable declarada fuera de una función se vuelve GLOBAL.
Ejemplo:
let carName = "Volvo";
// el código aquí puede usar carName
function myFunction() {
// el código aquí también puede usar carName
}
Una variable global tiene alcance global:
Todos los scripts y funciones de una página web pueden acceder a ella.
Alcance global
Las variables declaradas globalmente (fuera de cualquier función) tienen alcance global.
Se puede acceder a las variables globales desde cualquier lugar en un programa JavaScript.
Las variables declaradas con var
, let
y const
son bastante similares cuando se declaran fuera de un bloque.
Todos ellos tienen alcance global:
var x = 2; // Alcance global
let x = 2; // Alcance global
const x = 2; // Alcance global
Variables de JavaScript
En JavaScript, los objetos y funciones también son variables.
El alcance determina la accesibilidad de variables, objetos y funciones de diferentes partes del código.
Automáticamente global
Si asigna un valor a una variable que no ha sido declarada, automáticamente se convertirá en una variable GLOBAL.
Este ejemplo de código declarará una variable global carName
, incluso si el valor se asigna dentro de una función.
Ejemplo:
myFunction();
// el código aquí puede usar carName
function myFunction() {
carName = "Volvo";
}
Modo estricto
Todos los navegadores modernos admiten la ejecución de JavaScript en "modo estricto".
Aprenderá más sobre cómo utilizar el modo estricto en un capítulo posterior de este tutorial.
En el "modo estricto", las variables no declaradas no son automáticamente globales.
Variables globales en HTML
Con JavaScript, el alcance global es el entorno de JavaScript.
En HTML, el alcance global es el objeto window
.
Las variables globales definidas con la palabra clave var
pertenecen al objeto window
:
Ejemplo:
var carName = "Volvo";
// el código aquí puede usar window.carName
Las variables globales definidas con la palabra clave let
no pertenecen al objeto window
:
Ejemplo:
let carName = "Volvo";
// el código aquí NO puede usar window.carName
Advertencia
NO cree variables globales a menos que tenga la intención de hacerlo.
Sus variables (o funciones) globales pueden sobrescribir las variables (o funciones) de
window
. Cualquier función, incluido el objetowindow
, puede sobrescribir sus variables y funciones globales.
La vida útil de las variables de JavaScript
La vida útil de una variable JavaScript comienza cuando se declara.
Las variables de función (locales) se eliminan cuando se completa la función.
En un navegador web, las variables globales se eliminan cuando cierra la ventana (o pestaña) del navegador.
Argumentos de función
Los argumentos de función (parámetros) funcionan como variables locales dentro de funciones.
W3Schools es el sitio de desarrolladores web más grande del mundo.