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

240
Visualizações
Pregunta de cierre de JavaScript con ejemplo de contador

Considere que tenemos fragmentos de seguimiento:

 function Counter() { let count = 0 function inc() { count += 1 } function dec() { count -= 1 } function getCount() { return count } return { getCount, inc, dec, count } } const counter = Counter() counter.inc() counter.inc() console.log(counter.getCount()) // 2 console.log(counter.count) // 0

Me pregunto por qué usar la función getCount() y devolver directamente la variable de count muestra un resultado diferente. En mi opinión, ambos hacen referencia a la misma dirección de count , y después de que inc() llame, su valor debe modificarse en consecuencia.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

return { getCount, inc, dec, count } :

  1. Crea un nuevo objeto
  2. Copia los valores actuales de esas cuatro variables en propiedades con los mismos nombres
  3. Devuelve ese objeto

Cuando cambia el valor de la variable de count , no cambia el valor de la propiedad de count .

about 4 years ago · Juan Pablo Isaza Relatório

0

La razón es porque cuando hace counter.count , está obteniendo el valor de conteo del nuevo objeto que devolvió. Ese recuento es en realidad una copia del valor en el momento en que se creó y nunca se actualizará.

Si, en cambio, crea una clase y usa this.count en su lugar, siempre se actualizará.

 class Counter { constructor() { this.count = 0; } inc() { this.count += 1; } dec() { this.count -= 1; } getCount() { return this.count; } } const counter = new Counter(); counter.inc() counter.inc() console.log(counter.getCount()) // 2 console.log(counter.count) // 2

O, si quieres hacerlo de la manera más antigua:

 function Counter() { this.count = 0 function inc() { count += 1 } function dec() { count -= 1 } function getCount() { return count } this.inc = inc; this.dec = dec; this.getCount = getCount; return this; } const counter = Counter() counter.inc() counter.inc() console.log(counter.getCount()) // 2 console.log(counter.count) // 2

O bien, podría count y objetar con algún valor que se actualizaría:

 function Counter() { let count = { value: 0 } function inc() { count.value += 1 } function dec() { count.value -= 1 } function getCount() { return count.value } return { getCount, inc, dec, count } } const counter = Counter() counter.inc() counter.inc() console.log(counter.getCount()) // 2 console.log(counter.count.value) // 2

Aunque ese último es un poco tonto para este caso de uso en particular.

about 4 years ago · Juan Pablo Isaza Relatório

0

Principalmente porque el count que está devolviendo de la función es una copia de la variable ( valor para ser más preciso) y getCount es una función, que se refiere a la referencia de una variable de count . Más puedes aprender aquí .

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