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

322
Views
¿La variable const en la función javascript se inicializa cada vez que llama o solo una vez?

Me gustaría codificar algo como esto.

 function cokeDispencer(id) { const dict = {1:"sprite", 2:"pepcy", ...} // Some JSON. It might be bigger. return dict[id]; }

Por supuesto, dict[id] es una forma mucho más sencilla de hacer lo mismo, pero quiero poner el objeto dict dentro de la función para que ninguna otra función pueda acceder a este objeto dict. Lo que me pregunto es que el objeto dict se inicializa cada vez que llama. Como sé, la función escrita en C/C++ inicializa su variable local cada vez que llama, excepto la variable estática. Si es así, ¿hay alguna forma de inicializar la variable const solo una vez como la variable estática C/C++?

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

0

Sí, está creando un nuevo objeto dict cada vez que se ejecuta esa función.

En su lugar, puede crear un IIFE : una función que se ejecuta inmediatamente y se "cierra" sobre el objeto y puede devolver una función que accede a la propiedad deseada.

 const cokeDispencer = (() => { const dict = {1:"sprite", 2:"pepcy"} // Some JSON. It might be bigger. return id => dict[id]; })(); console.log(cokeDispencer(1));

Esto es casi lo mismo que

 const dict = {1:"sprite", 2:"pepcy"} // Some JSON. It might be bigger. const cokeDispencer = id => dict[id]; console.log(cokeDispencer(1));

excepto que el IIFE se asegura de que solo la función cokeDispener tenga acceso al objeto.

Si desea crear el objeto solo la primera vez que se llama a la función, y no antes, puede usar una técnica bastante similar para asignar una variable con alcance solo a la función si es necesario.

 const cokeDispencer = (() => { let dict; return (id) => { if (!dict) { dict = {1:"sprite", 2:"pepcy"} // Some JSON. It might be bigger. } return dict[id]; }; })(); console.log(cokeDispencer(1));

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!