ambito-de-variables-en-javascript

Ámbito de las variables en JavaScript

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

Á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.