let a = 7; a = 3; console.log(a); // output 3En este caso, ¿el valor 7 todavía está dentro de una memoria? Estaba leyendo que todos los tipos de datos primitivos son inmutables.
El valor de a se mantiene en la memoria, hasta que la recolección de elementos no utilizados eventualmente lo recicla. Lo que los documentos quieren decir con inmutable es que no puede alterar directamente el primativo (en este caso, el número entero 7). Solo puede reemplazar el valor.
Hay ejemplos en los documentos, pero este es otro.
let a = 1; a.toString() // a is still 1, it cannot be mutatedSin embargo, podemos asignar esto a otra variable.
let a = 1; let b = a.toString() // b is string "1" and a remains as the integer 1O podemos reemplazar el valor
let a = 1; a = 10; // a is 10Respuesta corta: no.
Inmutable se trata del comportamiento del valor, no de lo que sucede cuando ya no son referencias: no puede cambiar un valor inmutable, debe reasignar su variable si desea que apunte a un nuevo valor.
let b = 3; let a = b; // the variable "a" points to the primitive value 3 b = 7; // the variable "a" still points to the primitive value 3 a = 7; // and now it points to a _different_ value. 7, in this case.Esto contrasta con cosas como matrices u objetos, que puede cambiar tanto como quiera sin necesidad de reasignar:
const obj = {}; const a = obj; obj.cat = `meow`; console.log(a); // this will show that "a" is { cat: "meow" }Acabamos de cambiar el contenido del valor al que apunta "a", sin ninguna reasignación.