En JavaScript, el ámbito (o scope) de las variables es un concepto que se refiere a la parte del programa donde la variable es accesible.
JavaScript utiliza tres tipos de ámbito:
- Ámbito global
- Ámbito local
- Ámbito de bloque
Si quieres aprender más sobre Ámbito de las Variables
consulta el Curso de Introducción a la Programación leer más
Ámbito global
El ámbito global es el contexto más amplio en el que se ejecuta el código JavaScript. Las variables declaradas en el ámbito global están disponibles en cualquier parte del código ( incluidas las funciones y bloques).
let globalVar = 'Soy una variable global';
function mostrarGlobal() {
console.log(globalVar); // Accesible aquí
}
mostrarGlobal(); // Imprime: Soy una variable global
console.log(globalVar); // También accesible aquí
En el ejemplo anterior, globalVar
es accesible tanto dentro de la función mostrarGlobal
como fuera de ella, debido a que está en el ámbito global.
Es aconsejable usar la menor cantidad de variables globales, porque a la larga se convierten en un lio de mantenibilidad
Ámbito local
El ámbito local se refiere a las variables declaradas dentro de una función. Estas variables sólo son accesibles dentro de la función donde fueron declaradas.
function miFuncion() {
let localVar = 'Soy una variable local';
console.log(localVar); // Accesible aquí
}
miFuncion(); // Imprime: Soy una variable local
console.log(localVar); // Error: localVar no está definida
En este caso, localVar
sólo está disponible dentro de miFuncion
. Intentar acceder a localVar
fuera de la función resulta en un error, ya que no está en el ámbito global.
Ámbito de bloque
El ámbito de bloque se introdujo con ES6 y permite que las variables se declaren dentro de un bloque {}
.
Las variables declaradas con let
o const
tienen ámbito de bloque, lo que significa que son accesibles solo dentro del bloque en el que se encuentran.
function bloqueEjemplo() {
if (true) {
let bloqueVar = 'Soy una variable de bloque';
console.log(bloqueVar); // Accesible aquí
}
console.log(bloqueVar); // Error: bloqueVar no está definida
}
bloqueEjemplo();
En este ejemplo, bloqueVar
está disponible solo dentro del bloque if
. Intentar acceder a bloqueVar
fuera del bloque resulta en un error.