Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

534
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!