Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

208
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda