Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
const
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
Resumen
Las variables constantes presentan unámbito de bloque (block scope) tal y como lo hacen las variables definidas usando la instrucciónlet, con la particularidad de que el valor de una constante no puede cambiarse a través de la reasignación. Las constantesno se pueden redeclarar.
Advertencia:Laredeclaración de la misma variable bajo un mismoámbito léxico terminaría en un error de tipoSyntaxError. Esto también esextensible si usamosvar dentro del ámbito léxico. Esto nos salvaguarda de redeclarar una variable accidentalmente y que no era posible solo convar.
In this article
Sintaxis
const varname1 = value1 [, varname2 = value2 [, varname3 = value3 [, ... [, varnameN = valueN]]]];
Descripción
Esta declaración crea una constante cuyo alcance puede serglobal o local para el bloque en el que se declara. Es necesarioinicializar la constante, es decir, se debe especificar su valor en la misma sentencia en la que se declara, lo que tiene sentido, dado que no se puede cambiar posteriormente.
La declaración de una constante crea una referencia de sólo lectura. No significa que el valor que tiene sea inmutable, sino que el identificador de variable no puede ser reasignado, por lo tanto, en el caso de que la asignación a la constante sea un objeto, el objeto sí que puede ser alterado.
Una constanteno puede compartir su nombre con una función o variable en el mismo ámbito.
Todas las consideraciones acerca de la "zona muerta temporal " se aplican tanto alet yconst.
Advertencia:const ~~es~~fue unaextensión especifica de Mozilla, no ~~es~~era soportado en IE, pero ~~tiene~~tenia soporte parcial por Opera desde la versión 9.0 y por Safari.
Ejemplos
El siguiente ejemplo produce una salida"a es 7."
const a = 7;document.writeln("a es " + a + ".");Las siguientes instrucciones demuestra como se comportaconst
Advertencia:Las instrucciones deberán ser ordenadas correctamente para conseguir la salida esperada a los ejemplos
// NOTA: Las constantes pueden ser declaradas en mayusculas o minusculaas,//pero por convencion para distinguirlas del resto de variables se escribe todo en mayusculas// definimos MY_FAV como constante y le damos un valor de 7const MY_FAV = 7;// lanzara un error: Unkeught TypeError: Asignación a variable constante.MY_FAV = 20;// imprimira 7console.log("my favorite number is: " + MY_FAV);// lanzara un error: SyntaxError: tratando de redeclarar una constante. El identificador 'MY_FAV' ya ha sido declaradoconst MY_FAV = 20;// el nombre MY_FAV esta reservado para la constante anterior, también fallara y lanzara un SyntaxError por la redeclaraciónvar MY_FAV = 20;// el nombre MY_FAV esta reservado para la variable anterior, esto también lanzara un SyntaxError por la redeclaraciónlet MY_FAV = 20;// es importante tener en cuenta como funciona el alcance de bloqueif (MY_FAV === 7) { // esto esta bien y crea una variable MY_FAV de alcance/ambito de bloque // (funciona igual de bien con let para declarar un alcance de bloque/ambito de variable no-constante) const MY_FAV = 20; // MY_FAV ahora es 20 console.log("my favorite number is " + MY_FAV); // aquín también lanzara un SyntaxError por la redeclaración var MY_FAV = 20;}// MY_FAV todavia es 7console.log("my favorite number is " + MY_FAV);// lanza error, falta el inicializador en la declaracion de constconst FOO;// const tambien funciona en objetosconst MY_OBJECT = { key: "value" };// Intentando sobrescribir el objeto nos lanza un errorMY_OBJECT = { OTHER_KEY: "value" };// Sin embargo, los object keys no estan protegidas,// por lo que la siguiente sentencia se ejecutara sin problemaMY_OBJECT.key = "otherValue"; // Use Object.freeze() para hacer un objeto inmutable// Lo mismo se aplica a los arraysconst MY_ARRAY = [];// es posible empujar elementos en el arrayMY_ARRAY.push("A"); // ["A"]// Sin embargo, asignar un nuevo array a la variable lanza errorMY_ARRAY = ["B"];