Programando o Intentándolo

Variables y nuevos tipos de objetos JavaScript 6

Como es un lenguaje no tipado en javaScript las variables pueden almacenar cualquier tipo de objeto y por este motivo todas las variables se declaraban de la misma forma, usando var o simplemente poniendo el nombre de la variable sin más, hasta la la versión 6 de javaScript (ECMAScript v6) en la que se han introducido las constantes y las variables de bloque.

También se han incluido nuevos tipos de objetos interesantes como mapas Map y conjuntos Set y la no menos interesante nueva forma para intercalar variables dentro de cadenas de texto.

“Tipos” de variables

En realidad más correcto que tipos de variables sería hablar de ámbito de las variables por que los tipos que hay lo que diferencian es el ámbito en el que serán visibles, con excepción de las constantes que en realidad sí que serían un tipo, o más bien lo contrario a una variable.

Variables globales

En javaScript se pueden crear las variable globales de 2 formas, usando var si se declara fuera de cualquier función o simplemente poniendo el nombre de la variable en cualquier parte del código sin var.

Variables locales

Las variables locales y globales en realidad son lo mismo, por algo se declaran de la misma forma (con var), la “diferencia” radica en el ámbito en el que se declaran, si se declara fuera de cualquier función es una variable global y si se declara dentro es local (solo es global en su ámbito), es decir, será accesible desde cualquier otra función declarada al mismo nivel o un nivel inferior que la variable local pero no será accesible desde fuera.

Una vez terminado el repaso de las formas clásicas de definir variables, vamos con lo nuevo.

Variables de bloque

Con let se pueden declarar variables que solo sean accesibles dentro del ámbito en el que se declaran (de verdad), las variables declaradas con let dentro de bucles o estructuras condicionales solo son visibles dentro dicho ámbito, usando var aunque se podría pensar que sería así la realidad es bien distinta.

En este ejemplo se puede ver como con al declarar una variable con var en un bucle for o dentro de un if la variable es totalmente accesible desde fuera como se puede comprobar en las líneas 5, 10 y 17 mientras que con let las variables solo son accesibles dentro del ámbito en el que se declaran y por lo tanto si hay una variable exterior con el mismo nombre que una de las variables de propio ámbito declarada con let dentro de ese ámbito tendremos el valor de dicha variable pero al salir el valor “global” no se habrá visto afectado como se puede ver con la varible i, que despues del segundo for mantiene el valor 2 y no 7 como ocurriría si hubiésemos usado var dentro de el segundo for.

Constantes

Hasta ahora no existían las constantes en javaScript y aun que podíamos remarcar una constante poniendo el nombre en mayúsculas no se podía impedir que su valor fuese modificado.

Ahora con const se pueden declarar constantes de forma real y si intentamos cambiarle el valor o declarar una constante sin asignarle un valor se producirá un error.

Nuevos tipos de objetos

Se añaden a los tipos tipos basicos (Strings, numeros y Booleans), Object y Array dos nuevos tipos Map y Set

Map

Con Map se pueden crear mapas clave/valor, vamos a ver algunas de las operaciones que podemos hacer con este nuevo tipo de objeto.

Set

Otro de los nuevos objetos añadidos es Set que permite almacenar listas de valores únicos.

Interpolar variables dentro de strings

Otro de los puntos interesantes introducidos referente a los tipos de datos es la simplificación para la interpolación de variables dentro de strings sin la necesidad de estar concatenando las cadenas de texto trozo a trozo con las variables con lo que el código se hace más legible.

Para poder hacer uso de ${variable} el string tiene que estar creado con ` (acento grave), si se usan comillas simples o dobles no se interpreta la variable y el resultado será el texto tal cual está escrito.