El ámbito de una variable (también conocido como scope, por su nombre en inglés) es el fragmento o bloque de código de un programa en el que una variable definida tiene valor. Dicho de otro modo, es la zona en que esa variable existe, tiene valor y puede utilizarse para realizar cualquier acción. En JavaScript existen dos ámbitos para las variables: global y local. Conozcamos un poco más acerca de la variable global.
¿Qué es una variable global en JavaScript?
Una variable global es aquella que está disponible a lo largo del script actual, es decir, dentro de todo el código JavaScript que se está escribiendo. Una variable que se declara fuera de cualquier función se transforma en global, aun definiéndola con una palabra reservada (var, let, const) o no.
En cambio, una variable local es aquella que solo está disponible dentro de una función del script actual: la función donde fue definida o declarada.
Cómo declarar variables globales en JavaScript (con ejemplo)
Como puedes ver, las variables definidas dentro de una función pueden ser globales o locales.
Las variables que se declaran mediante una palabra reservada (var, let, const) se consideran locales y las variables que no se han declarado mediante una palabra reservada se transforman automáticamente en variables globales.
Para aclarar estos conceptos tomemos el siguiente código de ejemplo:
let global = "soy una variable global";function realizarAccion() { global = "soy una variable global modificada en una función"; console.log(global); let local = "soy una variable local" console.log(local);} console.log("--------");console.log(global);console.log("--------");realizarAccion();console.log("--------");console.log(global);console.log(local); // ReferenceError: local is not definedconsole.log("--------");
El anterior bloque de código nos arroja la siguiente salida:
--------soy una variable global--------soy una variable global modificada en una funciónsoy una variable local--------soy una variable global modificada en una funciónC:\...\prueba.js:16console.log(local); ^ReferenceError: local is not defined
at Object.<anonymous> (C:\...\prueba.js:16:13) at Module._compile (node:internal/modules/cjs/loader:1105:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12) at node:internal/main/run_main_module:17:47
La variable llamada global tiene un ámbito global y por eso puede ser utilizada e incluso modificada dentro de la función realizarAccion(). En cuanto a la variable que tiene un ámbito local dentro de realizarAccion(), JavaScript nos arroja un error de referencia indicándonos que esa variable no está definida al intentar acceder a dicha variable fuera de la función. En cambio, si intentamos acceder a la variable local dentro de la función donde fue declarada, entonces sí que podemos usarla.
Recomendaciones acerca de las variables globales de JavaScript
En cuanto al ámbito de variables en JavaScript, la recomendación general es definir como variables locales dentro de una función a aquellas variables que sean utilizadas únicamente para realizar las tareas específicas de dicha función. Las variables globales normalmente son utilizadas para compartir valores entre dos o más funciones.
Las variables globales no declaradas con una palabra reservada, es decir, aquellas que se declaran «al vuelo», a menudo provocan un comportamiento inesperado normalmente relacionado al manejo de la memoria de JavaScript. Por esta razón no se recomienda utilizar variables globales no declaradas.