JavaScript Const palabra clave
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; // Esto dará un error
PI = PI + 10; // Esto también dará un error
Try it Yourself »
Debe ser asignado
A las variables JavaScript const
se les debe asignar un valor cuando se declaran:
Correcto
const PI = 3.14159265359;
Incorrecto
const PI;
PI = 3.14159265359;
¿Cuándo utilizar JavaScript constante?
Como regla general, declare siempre una variable con const
a menos que sepa que el valor cambiará.
Utilice const
cuando declare:
- Una nueva matriz
- Un nuevo objeto
- Una nueva función
- Una nueva RegExp
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.
Debido a 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
// Puedes crear una matriz constante:
const cars = ["Saab", "Volvo", "BMW"];
// Puedes cambiar un elemento:
cars[0] = "Toyota";
// Puedes agregar un elemento:
cars.push("Audi");
Try it Yourself »
Pero NO puedes reasignar la matriz:
Ejemplo
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Try it Yourself »
Objetos constantes
Puedes cambiar las propiedades de un objeto constante:
Ejemplo
// Puedes crear un objeto constante:
const car = {type:"Fiat", model:"500", color:"white"};
// Puedes cambiar una propiedad:
car.color = "red";
// Puedes agregar una propiedad:
car.owner = "Johnson";
Try it Yourself »
Pero NO puedes reasignar el objeto:
Ejemplo
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; // ERROR
Try it Yourself »
Soporte del navegador
La palabra clave const
no es compatible con Internet Explorer 10 o versiones anteriores.
La siguiente tabla define las primeras versiones del navegador con soporte completo para la palabra clave const
:
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | 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:
Puede obtener más información sobre el alcance del bloque en el capítulo Alcance de JavaScript.
Redeclaración
Se permite redeclarar una variable var
de JavaScript en cualquier parte de un programa:
Ejemplo
var x = 2; // Permitido
var x = 3; // Permitido
x = 4; // Permitido
Redeclarar una variable var
o let
existente a const
, en el mismo ámbito, no se permite:
Ejemplo
var x = 2; // Permitido
const x = 2; // No permitido
{
let x = 2; // Permitido
const x = 2; // No permitido
}
{
const x = 2; // Permitido
const x = 2; // No permitido
}
No se permite reasignar una variable const
existente, en el mismo ámbito:
Ejemplo
const x = 2; // Permitido
x = 2; // No permitido
var x = 2; // No permitido
let x = 2; // No permitido
const x = 2; // No permitido
{
const x = 2; // Permitido
x = 2;
// No permitido
var x = 2;
// No permitido
let x = 2;
// No permitido
const x = 2; // No permitido
}
Se permite redeclarar una variable con const
, en otro alcance o en otro bloque:
Ejemplo
const x = 2; // Permitido
{
const x = 3; // Permitido
}
{
const x = 4; // Permitido
}
Elevación constante
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:
Si quieres aprender más sobre izado, estudia el capítulo Elevación con JavaScript.
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 una ReferenceError
: