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

205
Views
¿Cómo se hace referencia a las variables de JavaScript?

Actualmente estoy estudiando para una entrevista técnica y solo estoy pasando por la rutina de leetcode. Encontré una pregunta que aparentemente la compañía en la que estoy a punto de entrevistar me hace con bastante frecuencia, así que lo intenté. No pude entenderlo, así que busqué la solución y encontré esta solución.

 var merge = function(intervals) { if(!intervals.length) return intervals; intervals = intervals.sort((a,b) => a[0] - b[0]) let prev = intervals[0]; let res = [prev]; for(let curr of intervals){ if(curr[0] <= prev[1]){ prev[1] = Math.max(prev[1], curr[1]); } else { res.push(curr); prev = curr; } } return res; };

en la línea 5, res se establece en igual a [prev], que en este caso es [1,3], por lo que

 res = [[1,3]]

por ahora.

Luego, a medida que avanza el código, observe cómo se actualiza el valor de prev. Pensé que esto era extraño ya que la resolución nunca se actualiza en absoluto, pero al actualizar el valor de prev, la res interna anterior también se actualiza. Mi pregunta es:

¿Cómo actualizar el valor de anterior actualiza el valor de anterior que está dentro de res? Pensé que me estaba volviendo loco, así que lo probé y esta solución funcionó. Pensé que una vez que se haya asignado la resolución interna anterior, ¿sería inmutable? ¿Me estoy perdiendo de algo?

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

0

let prev = intervals[0]; let res = [prev];

En este punto, res[0] , prev e intervals[0] tienen el mismo valor.

 console.log(prev === res[0]); // true console.log(prev === intervals[0]); // true console.log(res[0] === intervals[0]); // true

Si este valor hiciera referencia a un objeto, entonces todos apuntan al objeto. Si tuviera que reasignar prev , eso no modifica res[0] , ni intervals[0] .

 prev = 'something else'; console.log(prev === res[0]); // FALSE console.log(prev === intervals[0]); // FALSE console.log(res[0] === intervals[0]); // true

¿Cómo actualizar el valor de anterior actualiza el valor de anterior que está dentro de res?

Puede ver en este ejemplo que actualizar el valor de prev en realidad no actualiza el valor de res[0] .

Sin embargo, actualizar el valor de prev[1] en realidad está actualizando el valor del índice 1 del objeto/matriz al que hace referencia prev . En otras palabras, no está cambiando prev al configurar prev[1] = ... está cambiando prev[1] , que es lo mismo que res[0][1] .

about 4 years ago · Juan Pablo Isaza Report

0

Esto sucede porque la referencia de prev está siendo señalada por res cuando haces res=[prev] , básicamente se señala la dirección donde se almacena la matriz prev real, ya que las actualizaciones de prev también muestran cambios en res.

about 4 years ago · Juan Pablo Isaza Report

0

No tiene sentido para usted porque está asumiendo que se está creando una nueva copia de prev cuando hace res = [prev] .
En cambio, intente pensarlo de esta manera: se crea una matriz que internamente apunta a la dirección de memoria de los datos que contiene prev . Cada vez que cambien los datos en esa dirección de memoria, se actualizarán en todos los lugares donde se usó esa dirección.
Leería sobre los tipos de referencia frente a los tipos primitivos.

about 4 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 Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!