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

233
Views
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 answers
Answer question

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 Report

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 Report

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 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!