es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Primitivas y asignación de memoria en JavaScript.

Hola gente de Stack Overflow 🙂

Soy un desarrollador web adentrándome en algunos conceptos de JavaScript.

Estuve leyendo la documentación de ECMA y MDN para realmente comprender los entornos léxicos, contextos de ejecución, cierres y gestión de memoria, pero realmente me quedé atrapado en este tema.

Ejemplo:

const x = 1;
let y = x;
y = 2;

Hasta donde entiendo, 1 y 2 son primitivos, por lo que son inmutables, y cada vez que reasigno una variable, detrás de escena estoy cambiando la referencia. Entonces, en la línea 2, y y x están apuntando al mismo valor.

Y aquí viene mi dolor de cabeza: ¿dónde está ese valor? ¿Simplemente estoy agregando al stack dos referencias al número 1 (en este caso)?

No entiendo si cada primitivo tendrá la misma dirección de memoria para toda la ejecución del programa o cuál es el comportamiento detrás de eso.

Hay tanta información y no sé en quién puedo confiar porque en muchos casos la información es contradictoria, jaja.

Gracias por su tiempo, chicos, y para ser honesto, también estoy aprendiendo inglés, así que espero que puedan entenderme 🙂

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hola,

    Como experto en JavaScript especializado en primitivas y ECMA, puedo ayudarle a comprender el concepto de manejo de memoria y cómo se relaciona con las primitivas.

    En el ejemplo que proporcionó, const x = 1 crea un valor primitivo del número 1 y lo asigna a la variable x. Cuando declara let y = x, está creando una nueva variable y y asignándole el valor de x. Esto significa que y y x hacen referencia al mismo valor primitivo de 1.

    Ahora, cuando reasigna y a 2 con y = 2, está creando un nuevo valor primitivo de 2 y asignándolo a la variable y. Esto no cambia el valor primitivo original de 1 ni su ubicación en memoria. En cambio, actualiza la referencia de la variable y para que apunte al nuevo valor primitivo de 2, mientras que la referencia de x todavía apunta al valor primitivo original de 1.

    En cuanto al manejo de memoria, las primitivas se almacenan en la pila de memoria en lugar del montón, donde se almacenan estructuras de datos más complejas como objetos y matrices. Cuando se crea un valor primitivo, se almacena en una ubicación de memoria en la pila. Cuando una variable recibe un valor primitivo, simplemente contiene una referencia a esa ubicación de memoria.

    En resumen, cuando trabaja con primitivas en JavaScript, está trabajando con el propio valor en lugar de una referencia al mismo. Cada valor primitivo tiene su propia ubicación de memoria única en la pila, y cuando reasigna una variable a un nuevo valor primitivo, está actualizando la referencia para que apunte a esa nueva ubicación.

    Espero que esta explicación haya eliminado cualquier confusión que haya tenido, y siéntase libre de hacer cualquier otra pregunta que tenga. ¡Buena suerte con sus estudios!

Comments are closed.