Expresión const en JavaScript

Expresión const en JavaScript
Expresión const en JavaScript

Las expresiones const en javascript están sujetas a un alcance de bloque de la misma manera que las variables definidas mediante una expresión let, pero el valor de las constantes no se puede cambiar por reasignación ni se pueden volver a declarar.

Características generales

Las constantes son globales o locales y están sujetas a su definición de dominio, pero las constantes globales no se convertirán en propiedades del objeto global a diferencia de las variables definidas mediante var. Tenga en cuenta que es necesario inicializar el valor de la constante directamente, es decir, el valor debe proporcionarse en la misma expresión que declara la constante, lo que tiene sentido porque no es posible cambiar el valor de la constante más tarde.

Declarar constantes mediante const creará una referencia de solo lectura a un valor. Esto no significa que el valor asociado con las constantes no sea modificable, sino que el identificador de la variable no se puede reasignar a un nuevo valor. Por ejemplo, si el valor asociado con la constante es un objeto, significa que el contenido del objeto (es decir, sus propiedades) se pueden modificar.

Estructura const en javascript

const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];

nameN

El nombre de la constante y puede ser cualquier identificador JavaScript válido.

valueN

El valor de la constante, cualquier expresión válida se puede utilizar en JavaScript, incluidas las funciones.

Ejemplos y aplicaciones en código

El siguiente ejemplo demuestra el comportamiento de las constantes, pruébelo en la línea de comandos de su navegador (consola). Tenga en cuenta que podemos declarar constantes en mayúsculas o minúsculas, pero es una práctica común definir constantes en mayúsculas para que sean más fáciles de distinguir de las variables.

En el siguiente ejemplo, definiremos una constante con un nombre y le MY_FAX daremos el valor 7. Tenga en cuenta que intentar asignarle un nuevo valor arrojará un error, y una constante con el mismo nombre no se puede volver a declarar, y es no es posible crear variables (vía varlet) con el mismo nombre que la constante.

Es importante tener en cuenta cuál es el efecto de los dominios de bloque, es posible volver a declarar una variable (via let) con el mismo nombre que la constante, pero las variables declaradas vía varno serán específicas del campo de bloque y arrojará un error .

// Definir la constante y asignarla 7 
const MY_FAV = 7;

// Uncaught TypeError: Assignment to constant variable.
MY_FAV = 20;

// 7
console.log('my favorite number is: ' + MY_FAV);
// Error de sintaxis no detectado: el identificador 'MY_FAV' ya ha sido declarado 
const MY_FAV = 20;

// Este nombre está reservado para la constante y no se puede utilizar como variable 
var MY_FAV = 20;

// tampoco permitido 
let MY_FAV = 20;

// es importante notar el efecto de los campos de 
if (MY_FAV === 7) { 
    // es posible crear una variable local con el mismo nombre que la constante 
    let MY_FAV = 20;

    // 20
    console.log('my favorite number is ' + MY_FAV);
    // Se producirá un error porque esta variable se 
    var MY_FAV = 20;
}

// 7
console.log('my favorite number is ' + MY_FAV);

Recuerda que es necesario asignar un valor a la constante al declararla, de lo contrario se lanzará un error. Tenga en cuenta también que las constantes se pueden usar con objetos y se puede acceder a sus propiedades:

// Error de sintaxis no detectado: Falta el inicializador en la declaración 
const FOO; 

// Las constantes se pueden usar con objetos 
const MY_OBJECT = {'key': 'value'};
// Intentando asignar un nuevo objeto a la constante 
// Uncaught TypeError: Assignment to constant variable.
MY_OBJECT = {'OTHER_KEY': 'value'};

// Pero las propiedades del objeto no están protegidas 
// Por lo que se puede hacer lo siguiente sin problemas 
MY_OBJECT.key = 'otherValue';  // Usa la función para hacer que el objeto sea inmutable Object.freeze ()

// lo mismo se aplica a las matrices 
const MY_ARRAY = [];
// Es posible agregar nuevos elementos al arreglo 
MY_ARRAY.push('A'); // ["A"]
// pero no puede asignarle una nueva matriz 
/ Uncaught TypeError: Assignment to constant variable.
MY_ARRAY = ['B'];

Soporte de navegadores

CaracterísticaChromeFirefoxIEÓperaSafari
Soporte básico2136115.1