CodeForge

JavaScript de Cero a Experto / Funciones

Scope: el alcance de las variables

Teoría20 min20 XP

¿Dónde puede verse cada variable? Una que creas dentro de una función, ¿la ve el resto del programa? El SCOPE (alcance) responde eso: las reglas de qué código puede acceder a qué variables. Entenderlo bien evita una familia entera de bugs confusos —y es la base para el concepto estrella de la próxima lección, los closures.

Las habitaciones de la casa

Global vs local

moneda es GLOBAL (vive fuera de las funciones) → todos la ven, incluida la función. mensaje es LOCAL de mostrarPrecio → solo existe mientras esa función corre, y afuera no está definida. La regla: de adentro ves hacia afuera, pero de afuera no ves lo de adentro.

Scope de bloque: las llaves también cuentan

Con let y const, incluso las llaves de un if o un for crean su propio "cuarto":

const bono declarado dentro del if solo existe ahí; afuera no. Esto es bueno: mantiene las variables acotadas a donde se usan, evitando que se "escapen" y causen confusión. (Este respeto por los bloques es justo lo que let/const arreglaron frente al viejo var, que se escapaba de los bloques — por eso el curso no usa var.)

Declaras const total dentro de una función calcular(). Luego, FUERA de la función, escribes console.log(total). ¿Qué pasa?

Mini-reto

Experimenta el scope en "Mi Bolsillo": crea una función function resumen(gastos) que dentro declare un const total. Intenta console.log(total) DESDE AFUERA (verás el error), luego arréglalo haciendo que la función lo DEVUELVA con return y guardándolo afuera (const t = resumen(...)). Provocar el error de scope y curarlo con return te graba la regla mejor que memorizarla.

Qué sigue

Sabes que lo de adentro ve lo de afuera. La próxima lección lleva esa idea a su consecuencia más poderosa y famosa: los CLOSURES. Una función puede "recordar" las variables del lugar donde nació, incluso después de que ese lugar terminó. Suena raro, pero es la base de patrones que usarás toda tu carrera.