• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

94
Views
El valor de la propiedad del objeto no cambió como se esperaba

Solo quería saber por qué en mi código he cambiado cr = 6 en un método, pero al imprimir el valor obj cr original, no se cambia a 6, pero sigue siendo su valor original. ¿Por qué? Si, en cambio, uso cr.next = 6, entonces el valor se cambia en el obj original. Espero obj.next = 6 . La salida generada es:

 { val: 1, next: { val: 2, next: { val: 3, next: null } } }

Esperaba que la salida fuera así:

 { val: 1, next: 6 } 

 let obj = { val: 1, next: { val: 2, next: { val: 3, next: null } } } cr = obj.next; cr = 6; console.log(obj)

about 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

La primera parte,

 cr = obj.next;

Significa "El valor del identificador (la palabra cr ) es el valor en la ubicación de la memoria que es el objeto obj.next "

 cr = 6;

Significa "Ignorar por completo cualquier valor anterior de cr ; el valor del identificador cr ahora es el literal entero 6 "


JavaScript, a diferencia de C/C++ (con punteros o pass-by-reference vs pass-by-value), no tiene forma de cambiar el valor de un objeto con un único identificador (nombre de variable). Puede cambiar el valor de la variable, pero no el objeto al que apuntaba anteriormente.

about 3 years ago · Juan Pablo Isaza Report

0

 let obj = { val: 1, next: { val: 2, next: { val: 3, next: null } } } cr = obj.next; cr = 6; console.log(obj) console.log("...........................") obj.next = 6 console.log(obj) console.log("...........................") console.log(cr) cr = obj.next; cr = 6;

Cuando haces cr = obj.next , crea una nueva variable y asigna el valor obj.next a cr. Después de eso, asigna 6 a cr para que sobrescriba el valor actual de cr y solo habrá 6.

Si desea una respuesta como {val: 1, next: 6} , debe escribir obj.next = 6 para obtener el resultado deseado.

Espero que te ayude a "seguir codificando".

about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error