• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

112
Vistas
Ejemplo IIFE de MDN

Estoy viendo el siguiente ejemplo de MDN sobre casos de uso para IIFE. No entiendo por qué es necesario el IIFE. Incluso si reescribo makeWithdraw como solo una declaración de función tomando copyBalance como parámetro, el resultado es el mismo. Entiendo que esto se debe al alcance funcional y que el uso de IIFE podría tener otros casos de uso sobre espacios de nombres globales y cierres. Pero, ¿qué está tratando de mostrarnos MDN aquí? De alguna manera no he aprendido correctamente algo. ¿Alguien puede ayudarme a volver a la normalidad?

 const makeWithdraw = balance => (function(copyBalance) { let balance = copyBalance; // This variable is private let doBadThings = function() { console.log("I will do bad things with your money"); }; doBadThings(); return { withdraw: function(amount) { if (balance >= amount) { balance -= amount; return balance; } else { return "Insufficient money"; } }, } })(balance); const firstAccount = makeWithdraw(100); // "I will do bad things with your money" console.log(firstAccount.balance); // undefined console.log(firstAccount.withdraw(20)); // 80 console.log(firstAccount.withdraw(30)); // 50 console.log(firstAccount.doBadThings); // undefined, this method is private const secondAccount = makeWithdraw(20); // "I will do bad things with your money" secondAccount.withdraw(30); // "Insufficient money" secondAccount.withdraw(20); // 0

Tengo que estudiar más sus respuestas, pero en respuesta al comentario sobre reproducibilidad, mis disculpas, esto es lo que quise decir con declaración de función:

 function makeWithdraw (balance) { let doBadThings = function() { console.log("I will do bad things with your money"); }; doBadThings(); return { withdraw: function(amount) { if (balance >= amount) { balance -= amount; return balance; } else { return "Insufficient money"; } }, } }; const firstAccount = makeWithdraw(100); // "I will do bad things with your money" console.log(firstAccount.balance); // undefined console.log(firstAccount.withdraw(20)); // 80 console.log(firstAccount.withdraw(30)); // 50 console.log(firstAccount.doBadThings); // undefined, this method is private const secondAccount = makeWithdraw(20); // "I will do bad things with your money" console.log(secondAccount.withdraw(30)); // "Insufficient money" secondAccount.withdraw(20); // 0
almost 3 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda