Variables en ES6

facebook-svg gplus-svg twitter-svg

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:

centro.z = 50;
Pero no podemos cambiar este objeto por otro.

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.