La palabra clave const
se introdujo en ES6 (2015)
Las variables definidas con const
no se pueden volver a declarar
Las variables definidas con const
no se pueden reasignar
Las variables definidas con const
tienen alcance de bloque
No se puede reasignar
Una variable const
no se puede reasignar:
Ejemplo:
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
Debe ser asignado
A las variables const
de JavaScript se les debe asignar un valor cuando se declaran:
Correcto:
**const PI = 3.14159265359;**
Incorrecto:
const PI;
PI = 3.14159265359;
¿Cuándo utilizar JavaScript const
?
Siempre declare una variable con const
cuando sepa que el valor no debe cambiarse.
Utilice const
cuando declare:
Una nueva matriz
Un nuevo objeto
Una nueva función
Una nueva expresión regular
Objetos constantes y matrices
La palabra clave const
es un poco engañosa.
No define un valor constante. Define una referencia constante a un valor.
Por esto NO puedes:
Reasignar un valor constante
Reasignar una matriz constante
Reasignar un objeto constante
Pero puedes:
Cambiar los elementos de la matriz constante.
Cambiar las propiedades del objeto constante.
Matrices constantes
Puedes cambiar los elementos de una matriz constante:
Ejemplo:
// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];
// You can change an element:
cars[0] = "Toyota";
// You can add an element:
cars.push("Audi");
Pero NO puedes reasignar la matriz:
Ejemplo:
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Objetos constantes
Puedes cambiar las propiedades de un objeto constante:
Ejemplo:
// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";
Pero NO puedes reasignar el objeto:
Ejemplo:
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; // ERROR
Diferencias entre var
, let
y const
Alcance | Re-declarar | Re-asignar | Hoisted | Binds this | |
var | No | Yes | Yes | Yes | Yes |
let | Yes | No | Yes | No | No |
const | Yes | No | No | No | No |
¿Qué es mejor?
let
y const
tienen alcance de bloque.
let
y const
no se pueden volver a declarar.
let
y const
deben declararse antes de su uso.
let
y const
no se une a this
.
let
y const
no es hoisted.
¿Qué NO es bueno?
var
no es necesario declararlo.
var
es hoisted.
var
binds to this.
Soporte del navegador
Las palabras clave let
y const
no son compatibles con Internet Explorer 11 o versiones anteriores.
La siguiente tabla define las primeras versiones del navegador con soporte completo:
Chrome | Edge | Firefox | Safari | Opera |
Chrome 49 | Edge 12 | Firefox 36 | Safari 11 | Opera 36 |
Mar, 2016 | Jul, 2015 | Jan, 2015 | Sep, 2017 | Mar, 2016 |
Alcance del bloque
Declarar una variable con const
es similar a let
cuando se trata de Block Scope.
La x
declarada en el bloque, en este ejemplo, no es la misma que la x
declarada fuera del bloque:
Ejemplo:
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
Puedes obtener más información sobre el alcance del bloque en el capítulo: JavaScript Scope.
Re-declaración
Se permite re-declarar una variable var
de JavaScript en cualquier parte de un programa:
Ejemplo:
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
No se permite re-declarar una variable var
o let
existente como const
, en el mismo ámbito:
Ejemplo:
var x = 2; // Allowed
const x = 2; // Not allowed
{
let x = 2; // Allowed
const x = 2; // Not allowed
}
{
const x = 2; // Allowed
const x = 2; // Not allowed
}
No se permite reasignar una variable const
existente, en el mismo ámbito:
Ejemplo:
const x = 2; // Allowed
x = 2; // Not allowed
var x = 2; // Not allowed
let x = 2; // Not allowed
const x = 2; // Not allowed
{
const x = 2; // Allowed
x = 2; // Not allowed
var x = 2; // Not allowed
let x = 2; // Not allowed
const x = 2; // Not allowed
}
Se permite re-declarar una variable con const
, en otro alcance o en otro bloque:
Ejemplo:
const x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
Hoisting
Las variables definidas con var
se elevan a la parte superior y se pueden inicializar en cualquier momento.
Significado: puede utilizar la variable antes de declararla:
Ejemplo:
Esto está bien:
carName = "Volvo";
var carName;
Si deseas obtener más información sobre hoisting, estudie el capítulo JavaScript Hoisting.
Las variables definidas con const
también se elevan a la parte superior, pero no se inicializan.
Significado: el uso de una variable const
antes de declararla dará como resultado ReferenceError
:
Ejemplo:
alert (carName);
const carName = "Volvo";
Traducido con 💚 desde W3Schools.com