Tipos de datos en JavaScript

Este es el segundo post de la serie Mis apuntes JavaScript. En este tutorial aprenderemos sobre la diferencia entre los tipos de datos var, let y const. En este articulo vamos a explicar la diferencia entre estos tres tipos datos que existen en JavaScript.

En los inicios de JavaScript var era la única forma en la que se podía crear una variable. Mucho después let y const nacen con el estándar de EcmaScript 6.

Características de var

Se puede reinicializar.

var name = "Andy";
var name = "AndyGeek";

Se puede reasignar.

var name = "Andy";
name = "AndyGeek";
console.log(name); // AndyGeek

Su alcance es global.

if (true) {
  var name = "andy";
} else {
  name = "andygeek";
}
console.log(name);

Esto también nos permitiría crear variables var con el mismo nombre dentro de varios if u otra estructura anidada. Incluso por su alcance nos si ejecutamos el siguiente código no obtendríamos errores.

console.log("My name is " + name);
var name = "Andy";
// My name is undefined

Esto no es nada intuitivo, lo que nos podría traer problemas a la hora de programar. Así que, el consejo es no usar var.

Características de let

No se puede reinicializar.

let name = "Andy";
let name = "AndyGeek";
// Mostrará un error

Se puede reasignar.

let name = "Andy";
name = "AndyGeek";
console.log(name); // AndyGeek

Su alcance es de bloque.

if (true) {
  let name = "andy";
} else {
  name = "andygeek";
  // El compilador no reconoce name
}
console.log(name);

Características de const

No se puede reinicializar.

const name = "Andy";
const name = "Andygeek";
// Obtendremos error al ejecutarlo

No se puede reasignar. Al ser una constante esta es su principal característica. No podemos cambiar el elemento completo de nuestra constante.

const name = "Andy";
name = "AndyGeek";
// Obtendremos error al ejecutarlo

No es inmutable. Podemos cambiar las propiedades del elemento constante, pero no todo el elemento. Esto lo explicaremos mediante un objeto.

const people = {
  name: "Andy",
};
console.log(people.name); // Andy
people.name = "AndyGeek";
console.log(people.name); // AndyGeek