El ámbito es "quién puede ver qué variable"
Imagina una casa. Lo que dejas en tu habitación no se ve desde la cocina. Las variables funcionan igual: cada una vive en una "habitación" y solo es visible desde dentro. A esa habitación la llamamos ámbito (o scope).
Entender esto te ahorra el clásico "pero si yo declaré esa variable, ¿por qué dice que no existe?". Spoiler: existe, pero en otra habitación.
Ámbito global
Una variable declarada fuera de toda función o bloque es global: se ve desde cualquier parte del programa. Cómoda, pero peligrosa si abusas: cualquiera puede tocarla.
const planeta = "Tierra"; // global
function mostrar() {
console.log(planeta); // accesible aquí
}
Ámbito local (de función)
Las variables declaradas dentro de una función solo existen ahí:
function calcular() {
const interna = 42;
return interna;
}
// console.log(interna); // ❌ Error: interna no existe fuera
Ámbito de bloque
Con let y const, cada par de llaves { } (un if, un for...) crea su
propia mini-habitación:
if (true) {
let mensaje = "hola";
console.log(mensaje); // ✅ "hola"
}
// console.log(mensaje); // ❌ Error: fuera del bloque no existe
⚠️ Trampa clásica:
varno respeta el ámbito de bloque, solo el de función. Una variablevardeclarada dentro de unifse escapa fuera y te da sorpresas. Por eso hoy usamosletyconst: respetan la habitación.
Ejemplos
La global se ve desde dentro; la local se queda encerrada en su función
const global = "soy global";
function demo() {
const local = "soy local";
console.log(global); // accesible
console.log(local); // accesible
}
demo();