Variables en ES6
En JavaScript tenemos 3 tipos de variables: var
, y desde hace poco const
y let
.
La diferencia entre const
y let
es que const
es una constante, o sea su valor no puede ser actualizado.
const x = 100;
x = 150;// da error!!
Sin embargo si el valor es un objeto,
const centro = { x:100, y:100 }
podemos actualizar el valor de las propiedades de este:
centro.x = 200;
o incluso podemos añadir nuevas propiedades:
Pero no podemos cambiar este objeto por otro.centro.z = 50;
centro = { a:100, b:100 }// da error!!
Definir una variable en ES6
Las variables declaradas con var
pueden ser redefinidas:
var nombre = "Gabi"; . . . . . . var nombre = "unpocodetodo";
Las variables declaradas con const
o let
no pueden ser declaradas dos veces, ya que esto da error.
const nombre = "Gabi";
. . . . . .
const nombre = "unpocodetodo";// da error!!
El mensaje que aparece en la consola es "el identificador 'nombre' ya ha sido declarado":
Uncaught SyntaxError: Identifier 'nombre' has already been declared
El alcance (scope)
Si declaramos una variable dentro de una función, esta variable será disponible solo dentro de esta función. Decimos que la variable tiene un alcance local ( local scope ).
Cualquier variable declarada fuera de la función está disponible en todo el documento. En este caso decimos que la variable tiene un alcance global ( global scope ).
Un bloque en Javacript es el código que escribimos entre llaves ( {...}
), o sea una función, un objeto, una sentencia condicional, un bucle etc. . .
A diferencia de var
, las variables declaradas con let
y const
, tienen un alcance local dentro de cualquier bloque de código.
Por ejemplo: si necesitamos utilizar un bucle for
para lo que fuera, al final podemos recuperar el valor de la variable i
que en este caso es 10.
for(var i = 0; i < 10; i++){ . . . . . } console.log(i);// 10
En este otro caso j
es una variable de alcance local, disponible solo dentro del bucle for:
for(let j = 0; j < 10; j++){ . . . . . . } console.log(j);// da error: 'j is not defined'
Cómo y cuando utilizar var, const y let en ES6
El articulo JavaScript ES6+: var, let, or const? escrito por Eric Elliott aconseja:
- Si no necesito reasignar el valor de la variable, const
es mi elección favorita.
- Cuando necesito reasignar una variable utilizo let
, generalmente en bucles y algoritmos matemáticos.
- var
es ya la más débil forma de variable en JavaScript.