let y const en ES6
Declaración
let:En ES6, la declaración
letse introdujo para crear variables de ámbito de bloque. Esto significa que una variable declarada conletsolo es accesible dentro del bloque (por ejemplo, dentro de una función o un par de llaves) donde se definió.Las variables definidas con
letno se elevan (hoisting, en inglés) a la parte superior de su función o bloque que las contiene. Esto evita problemas cuando se accede a las variables antes de declararlas.letle permite reasignar un valor a la variable después de su declaración inicial, haciéndola mutable.letallows you to reassign a value to the variable after its initial declaration, making it a mutable variable.Ejemplo:
function funcionEjemplo() { if (true) { let x = 10; console.log(x); // 10 } console.log(x); // Error: x no está definida }
Declaración
const:La declaración
consttambién introduce las variables de ámbito de bloque, pero viene con una restricción adicional: las variables declaradas conconstno pueden ser reasignadas después de su asingación inicial. Son constantes.constse usa a menudo para valores que no deberían cambiar, tales como constantes o referencias a objetos inmutables.Ejemplo:
const pi = 3.14159; pi = 3.14; // Error: Asignación a variable constante.
Comparación con ES5:
En ES5, JavaScript usaba primariamente la palabra clave var para la declaración de variables. Aquí están las diferencias clave cuando se compara let y const en ES6 con var en ES5:
Ámbito de bloque versus Ámbito de función:
ES6 (
letyconst): Las variables declaradas conletyconstson de ámbito de bloque, lo que significa que están limitadas al bloque donde se definen, sea este un bloque dentro de una función o un bloque en solitario.ES5 (
var): Las variables declaradas convarson de ámbito de función, lo que significa que son accesibles a través de toda la función que contiene la declaraciónvar.
Elevación:
ES6 (
letyconst): Las variables declaradas conletyconstno son elevadas al inicio de su bloque contenedor, lo que previene el uso de variables antes de que sean declaradas.ES5 (
var): Las variables declaradas convarson elevadas al inicio de su función contenedora, lo cual puede llevar a comportamientos inesperados si no se maneja cuidadosamente.
Reasignación:
ES6 (
letyconst): Las variables declaradas conletpueden ser reasignados después de su declaración inicial. Las variables declaradas conconstno se pueden reasignar, lo que las convierte en constantes.ES5 (
var): Las variables declaradas convarse pueden reasignar en cualquier punto de la función donde se declaran.
Constantes:
- ES6 (
const): ES6 introduce la palabra claveconst, que permite la creación de constantes, que no se pueden cambiar después de su asignación inicial.
- ES6 (
En resumen, let y const en ES6 proporciona un alcance de variable controlado y más predecible en comparación con var en ES5. Ayudan a evitar problemas comunes asociados con la elevación de variables y brindan la flexibilidad de elegir entre variables mutables e inmutables según sus necesidades.