Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

533
Vistas
La palabra clave 'const' no hace que el valor sea inmutable. ¿Qué significa?

Está la definición constante en Exploring ES6 del Dr. Axel Rauschmayer:

const funciona como let, pero la variable que declara debe inicializarse inmediatamente, con un valor que no se puede cambiar después . […]

 const bar = 123; bar = 456; // TypeError: `bar` is read-only

y luego escribe

Trampa: const no hace que el valor sea inmutable

const solo significa que una variable siempre tiene el mismo valor, pero no significa que el valor en sí sea o se vuelva inmutable.

Estoy un poco confundido con esta trampa. ¿Alguien puede definir claramente la const con esta trampa?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Cuando creas algo const en JavaScript, no puedes reasignar la variable en sí para hacer referencia a otra cosa. Sin embargo, la variable aún puede hacer referencia a un objeto mutable.

 const x = {a: 123}; // This is not allowed. This would reassign `x` itself to refer to a // different object. x = {b: 456}; // This, however, is allowed. This would mutate the object `x` refers to, // but `x` itself hasn't been reassigned to refer to something else. xa = 456;

En el caso de primitivas como cadenas y números, const es más simple de entender, ya que no muta los valores sino que asigna un nuevo valor a la variable.

over 4 years ago · Santiago Trujillo Denunciar

0

MDN lo resume muy bien:

La declaración const crea una referencia de solo lectura a un valor. No significa que el valor que contiene sea inmutable, solo que el identificador de la variable no se puede reasignar. Por ejemplo, en caso de que el contenido sea un objeto, esto significa que el objeto en sí aún puede modificarse.

Más sucintamente: const crea un enlace inmutable.

En otras palabras: const , como var , te da un trozo de memoria mutable en el que estás almacenando algo. Sin embargo, const dicta que debe seguir haciendo referencia a ese mismo fragmento de memoria; no puede reasignar la variable a un fragmento de memoria diferente, porque la referencia de la variable es constante.

Para hacer que algo sea realmente constante e inalterable después de haberlo declarado, debe usar algo como Object.freeze() . Sin embargo, eso es superficial y solo funciona en pares clave/valor. Congelar un objeto completo requiere un poco más de esfuerzo. Hacerlo repetidamente de manera eficaz es aún más desafiante. Si realmente lo necesita, le recomiendo que consulte algo como Immutable.js

over 4 years ago · Santiago Trujillo Denunciar

0

reencuadernación

Las declaraciones const y let controlan si se permiten reenlaces (también conocidos como reasignaciones) entre identificadores y valores:

 const x = "initial value"; let y = "initial value"; // rebinding/reassignment try { x = "reassignment" } catch(e) { console.log(x) } // fails y = "reassignment"; // succeeds console.log(y);

Inmutabilidad

La inmutabilidad se controla en el nivel de tipo. Object es un tipo mutable, mientras que String es un tipo inmutable:

 const o = {mutable: true}; const x = "immutable"; // mutations o.foo = true; // succeeds x[0] = "I"; // fails console.log(o); // {mutable: true, foo: true} console.log(x); // immutable

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda