Constante de JavaScript
La const
palabra clave 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 ámbito de bloque.
No se puede reasignar
Una const
variable 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 de JavaScript const
se les debe asignar un valor cuando se declaran:
Correcto
const PI = 3.14159265359;
Incorrecto
const PI;
PI = 3.14159265359;
¿Cuándo usar JavaScript const?
Como regla general, siempre declare una variable con const
a menos que sepa que el valor cambiará.
Úselo 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 eso NO puedes:
- Reasignar un valor constante
- Reasignar una matriz constante
- Reasignar un objeto constante
- Cambiar los elementos de la matriz constante
- Cambiar las propiedades del objeto constante
Pero puedes:
Matrices constantes
Puede 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 puede reasignar la matriz:
Ejemplo
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
Objetos constantes
Puede 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
Compatibilidad con navegador
La const
palabra clave no es compatible con Internet Explorer 10 o anterior.
La siguiente tabla define las primeras versiones del navegador con soporte completo para la const
palabra clave:
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
Ámbito de 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
Puede obtener más información sobre el ámbito del bloque en el capítulo Ámbito de JavaScript .
redeclarando
Se permite volver a declarar una variable de JavaScript var
en cualquier parte de un programa:
Ejemplo
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
No se permite redeclarar una variable existente var
o let
a 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 const
variable 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 redeclarar una variable con const
, en otro ámbito o en otro bloque:
Ejemplo
const x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
elevación constante
Las variables definidas con var
se elevan a la parte superior y se pueden inicializar en cualquier momento.
Significado: puede usar la variable antes de que se declare:
Ejemplo
Esto esta bien:
carName = "Volvo";
var carName;
Si desea obtener más información sobre la elevación, estudie el capítulo Elevación de JavaScript .
Las variables definidas con const
también se elevan a la parte superior, pero no se inicializan.
Significado: el uso de una const
variable antes de declararla dará como resultado
ReferenceError
:
Ejemplo
alert (carName);
const carName = "Volvo";