Const de JavaScript

ECMAScript 2015

ECMAScript 2015 introdujo dos nuevas palabras clave importantes en JavaScript:let y const.

A través const Las variables definidas son let Las variables definidas son similares, pero no se pueden reasignar:

Ejemplo

const PI = 3.141592653589793;
PI = 3.14;      // Dará error
PI = PI + 10;   // También dará error

Prueba por ti mismo

de ámbito de bloque

ende ámbito de bloqueusada const La variable declarada es let Las variables son similares.

En este ejemplo, x se declara en el bloque, diferente de x declarado fuera del bloque:

Ejemplo

var x = 10;
// Aquí, x es 10
{ 
  const x = 6;
  // Aquí, x es 6
}
// Aquí, x es 10

Prueba por ti mismo

En el capítulo anterior Let de JavaScript En la escuela secundaria aprendí más sobre el ámbito de bloque.

Al declararse

JavaScript const Las variables deben ser asignadas al declararse:

Incorrecto

const PI;
PI = 3.14159265359;

Correcto

const PI = 3.14159265359;

No es una constante verdadera

Palabra clave const Es un poco engañoso.

No define un valor constante. Define una referencia constante a un valor.

Por lo tanto, no podemos cambiar el valor original de la constante, pero podemos cambiar las propiedades del objeto constante.

Valor original

Si asignamos un valor original a una constante, no podemos cambiar el valor original:

Ejemplo

const PI = 3.141592653589793;
PI = 3.14;      // Dará error
PI = PI + 10;   // También dará error

Prueba por ti mismo

El objeto constante puede cambiar

Puede cambiar las propiedades del objeto constante:

Ejemplo

// Puede crear un objeto const:
const car = {type:"porsche", model:"911", color:"Black"};
// Puede cambiar las propiedades:
car.color = "White";
// Puede agregar propiedades:
car.owner = "Bill";

Prueba por ti mismo

Pero no puede asignar valores a un objeto constante nuevamente:

Ejemplo

const car = {type:"porsche", model:"911", color:"Black"};
car = {type:"Volvo", model:"XC60", color:"White"};    // ERROR

Prueba por ti mismo

Los arrays constantes pueden cambiar

Puede cambiar los elementos de un array constante:

Ejemplo

// Puede crear un array constante:
const cars = ["Audi", "BMW", "porsche"];
// Puede cambiar elementos:
cars[0] = "Honda";
// Puede agregar elementos:
cars.push("Volvo");

Prueba por ti mismo

Pero no puede asignar valores a un array constante nuevamente:

Ejemplo

const cars = ["Audi", "BMW", "porsche"];
cars = ["Honda", "Toyota", "Volvo"];    // ERROR

Prueba por ti mismo

Compatibilidad del navegador

Internet Explorer 10 o versiones anteriores no soportan const Palabra clave.

La siguiente tabla define las versiones de los navegadores que soportan completamente la palabra clave const:

Chrome 49 IE / Edge 11 Firefox 36 Safari 10 Opera 36
Marzo de 2016 Octubre de 2013 Febrero de 2015 Septiembre de 2016 Marzo de 2016

Redeclarar

Se permite redeclarar JavaScript en cualquier posición del programa var Variable:

Ejemplo

var x = 2;    // Permitido
var x = 3;    // Permitido
x = 4;        // Permitido

No se permite redeclarar o asignar valores a una variable existente en el mismo ámbito o bloque: var o let Redeclarar o asignar valores nuevamente a una variable const:

Ejemplo

var x = 2;         // Permitido
const x = 2;       // No permitido
{
  let x = 2;     // Permitido
  const x = 2;   // No permitido
}

No se permite redeclarar o asignar valores a una variable const existente en el mismo ámbito o bloque:

Ejemplo

const x = 2;       // Permite
const x = 3;       // No permitido
x = 3;             // No permitido
var x = 3;         // No permitido
let x = 3;         // No permitido
{
  const x = 2;   // Permite
  const x = 3;   // No permitido
  x = 3;         // No permitido
  var x = 3;     // No permitido
  let x = 3;     // No permitido
}

declara de nuevo en otro ámbito o bloque const Es permitido:

Ejemplo

const x = 2;       // Permite
{
  const x = 3;   // Permite
}
{
  const x = 4;   // Permite
}

Hoisting

A través var Las variables definidas seHoistingal nivel superior. Si no entiendes lo que es Hoisting, aprende sobre Hoisting en este capítulo.

Se puede usar la variable var antes de su declaración:

Ejemplo

carName = "Volvo";    // Se puede usar carName aquí
var carName;

Prueba por ti mismo

A través const Las variables definidas no se elevan al nivel superior.

const Las variables no pueden usarse antes de su declaración:

Ejemplo

carName = "Volvo";    // No se puede usar carName aquí
const carName = "Volvo";