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

141
Views
La nueva asignación de propiedad al objeto conduce a un comportamiento extraño en NodeJS

En un proceso de entrevista reciente, me pidieron que escribiera código para una API. NodeJS , v16.14.0 .

Sin embargo, me encontré con un comportamiento muy extraño:

 module.exports = { findSomething: (data) => { const keys = Object.keys(data).sort(); let maxObj = null; let maxKey = null; for (let i = 0; i < keys.length; ++i) { let key = keys[i]; const currObj = data[key]; if (maxObj == null || currObj.prop > maxObj.prop) { maxObj = currObj; maxKey = key; } } // Attempt to assign a new property to the object: // Variant 1, causes odd behaviour. maxObj.maxKey = maxKey; // Variant 2, object copy - works OK. let newData = {...maxObj} newData.maxKey = maxKey; return newData; } }

Este cambio muy pequeño (Variante 1 en lugar de 2), no dio errores, sin embargo, hizo que la función se comportara de manera muy extraña. a veces produciendo resultados correctos y otras simplemente nada. Esto me llevó a perder un tiempo precioso y, finalmente, me quedé atónito al descubrirlo.

No tengo conocimiento de casos de tal comportamiento. Como quiero aprender de esto y mejorar, ¿sabe por qué podría suceder esto o si me estoy perdiendo algo obvio aquí? Sé que asignar una nueva propiedad a un objeto existente está bien en JavaScript, y todas mis variables estaban dentro del alcance del uso.

about 4 years ago · Juan Pablo Isaza
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!