Scope de las variables en javascript

0
(0)

Publicado

Aviso importante web en obras

Es posible que el contenido que estás visualizando tenga un formato un poco raro o que se haya perdido algún contenido. Esto se debe a que en 2023/09 decidí renovar la página y con más de 1000 escritos el trabajo de irlos revisando uno por uno es agotador. Poco a poco iré corrigiendo todos los contenidos. ¡Gracias por la comprensión!

En esta entrada vamos a hablar sobre el ámbito (scope) de las variables en javascript. Voy a suponer que ya sabes declarar y usar funciones y que  también tienes claro el concepto de variable y su sintaxis en js.

A modo de repaso recordemos que en este lenguaje de programación no es obligado declarar las variables.

En el caso de ECMAScript 5 usamos la palabra reservada var.

En el caso de ECMAScript 6 además de var también podemos usar let y const.

Si ves que tienes un poco oxidados los conceptos anteriores entonces es el momento de dar un buen repaso. Quien mucho abarca poco aprieta.

Variables locales y variables globales

Una variable global se puede usar en cualquier lugar del script.

Una variable local sólo tiene validez dentro del ámbito de una función.

Las normas que aplican para definir el tipo de variable que estamos usando se resumen con 3 normas sencillas:

  1. Cualquier variable declarada o no declarada en la raíz de un script es siempre de ámbito global.
  2. Cualquier variable declarada dentro de una función es de ámbito local.
  3. Una variable NO declarada dentro de una función adquiere ámbito global.

Estas normas en realidad tienen su lógica. Javascript siempre aplica el caso más restrictivo y de mayor eficiencia de recursos de memoria consumidos.

En caso de duda, que es cuando la variable no ha sido declarada en un ámbito determinado, la variable adquiere comportamiento global.

Casos de uso de las propiedades del ámbito de las variables

En javascript se pueden dar algunos casos curiosos:

  • Dentro de una función podemos sobreescribir el valor de una variable global. Esto puede suceder por ejemplo por error si nos hemos olvidado de declarar una variable… y cargarnos un dato externo a la función sin darnos cuenta.
  • O también podemos usar la propiedad anterior a propósito para ahorrarnos líneas de código en un programa. Imaginar una pelota definida por una variable de tipo objeto que almacena dos propiedades que corresponden a las coordenadas x y en la pantalla. Cuando el usario pulse una determinada tecla activaremos una función que modificará la posición de la pelota. Si pulsa otra letra del teclado activará otra función que también modifique las coordenadas y así sucesivamente. Mediante una variable global usada dentro de las funciones activadas por cada tecla podemos actualizar cada vez las coordenadas de la variable de la pelota sin necesidad de más líneas de código.
  • Cuando declaramos una variable local con el mismo nombre que una variable global, temporalmente la variable local tiene prioridad sobre la global. Dentro de la función usaremos la variable local. Deberemos tratarlas como si temporalmente la variable global hubiera dejado de existir para nosotros.
  • Recordar que una variable declarada dentro de los paréntesis de declaración de la función se considera declarada de tipo local y que por cuestiones de sintaxis nunca va acompañada de la palabra reservada var.

Ejercicios

Para terminar con el escrito de hoy te propongo que dados los 2 ejercicios siguientes expliques paso a paso que valores toma cada variable del script en cada instante.
Scope de las variables en javascript 1

Scope de las variables en javascript 2

¿Qué normas aplican a let y const?

Pendiente de actualizar…¡Hola!

Querido lector,

¡Si te ha gustado este contenido te animo a seguirme en mi perfil de empresa de Linkedin!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *