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

238
Views
¿Por qué se requiere IIFE en el siguiente contexto?

Estoy trabajando para emular la funcionalidad require con algunas funciones de javascript, por ejemplo:

 // We set up an object that will include all the public modules // And then a require function which basically just accesses that public module const modules = {}; function require(moduleName) { return modules[moduleName]; } modules['math.js'] = function() { // hidden implementation details let incr = x => ++x; return { incr, sum(x,y) { return x+y; } } }

¿Por qué se requiere hacer modules['math.js'] = (function() {...})(); y no solo una llamada de función normal no invocada como la anterior?

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

0

modules["match.js"] es solo una función. Probablemente quieras que sea un objeto:

 modules["math.js"] = { ... };

¡Pero entonces no tendrás miembros privados o funciones que puedas usar! Todo será público. Entonces, para resolver esto, creamos un cierre:

 modules["math.js"] = function () { let priv = 0; return { ... }; };

Aquí es donde estamos ahora. Para convertirlo en un cierre Y hacer que los modules["math.js"] sean un buen objeto que podamos usar, inmediatamente llamamos a esta función:

 modules["math.js"] = (function () { let priv = 0; return { ... }; })();

Ahora, modules["math.js"] es un objeto con miembros y métodos que podemos usar, Y tiene una variable privada de alcance local llamada priv que solo puede usar el módulo.

Esto es similar a los módulos ES6 donde exporta unos pocos valores seleccionados vinculados a identificadores y todo lo demás en el archivo es privado.

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!