¿Qué imprime este código JavaScript?
let c = { greeting: "Hey!" };
let d;
d = c;
c.greeting = "Hello";
console.log(d.greeting);
- A:
Hello
- B:
undefined
- C:
ReferenceError
- D:
TypeError
Respuesta en el primer comentario.
For further actions, you may consider blocking this person and/or reporting abuse
The harsh reality for JS Developers: If you don't study the fundamentals, you'll be just another “Coder”. Top learnings on how to get to the mid/senior level faster as a JavaScript developer by Dragos Nedelcu.
Rajesh Joshi -
Omar.unwrap(); -
Jatin Sharma -
Jared Odulio -
Once suspended, duxtech will not be able to comment or publish posts until their suspension is removed.
Once unsuspended, duxtech will be able to comment and publish posts again.
Once unpublished, all posts by duxtech will become hidden and only accessible to themselves.
If duxtech is not suspended, they can still re-publish their posts from their dashboard.
Once unpublished, this post will become invisible to the public and only accessible to Cristian Fernando .
They can still re-publish the post if they are not suspended.
Thanks for keeping DEV Community 👩💻👨💻 safe. Here is what you can do to flag duxtech:
Unflagging duxtech will restore default visibility to their posts.
Top comments (1)
La respuesta es:
Hello
Cuando aplicamos el operador de asignación
=
entre objetos pensado que así lograremos obtener una copia del mismo estamos cayendo en un error de novato.Recuerda que los objetos se manejan segun su referencia y no por su valor como lo hacen los tipos primitivos del lenguaje, esto significa que al hacer esto:
No solo estamos copiando los valores del objeto
c
al objetod
sino que también copiamos su referencia en memoria. Esta referencia es la dirección donde dicho objeto se almacenerá en el disco duro del ordenador; en JavaScript al ser un lenguaje de alto nivel no podemos acceder a dichas direcciones como en lenguajes de bajo nivel como por ejemplo lenguaje ensamblador.Dicho en otras palabras, las direcciones de memoria del objeto
c
y del objetod
son las mismas, apuntan a la misma dirección, por ello, cuando intentamos modificar el objetoc
:En realidad, estamos modificando ambos objetos.
Para crear copias de objetos de manera segura se recomienda usar el spread operator con su sintaxis de tres puntos
...
Este método solo sirve para copiar objetos en el primer nivel, si deseamos realizar copias de objetos anidados se puede recurrir a otras alternativas como por ejemplo
JSON.stringify
.