Duplicar posible:
How do JavaScript closures work?¿Cuál es el propósito de pasar argumentos a las funciones anónimas de esta manera?
yo estaba jugando un poco con el Google Closure Compiler, poniendo en código aleatorio para ver lo que iba a hacer.
reescribió una de mis funciones a ser algo como esto:
(function(msg) { console.log(msg); })("Hello World!");
Cuando resulte que "Hello World"
es el argumento que se pasa como msg
a la función anónima que le precede. Estaba mirando por un momento, y había pensado que había visto algo similar en plugins jQuery que miran algo como:
(function($) {
...
})(jQuery);
que ahora hace más sentido para mí, en el ámbito de los conflictos con $
. Pero, ¿cuál es la razón principal o el propósito para pasar argumentos a una función anónima como esta? ¿Por qué no definirías simplemente los argumentos como variables dentro de la función? ¿Hay alguna ventaja de rendimiento o flexibilidad para escribir funciones como esta?
Para ese código específico, no existe un motivo real. Simplemente podría hacer 'console.log (" hello ");'. Pero generalmente es para crear algunas variables locales que solo son accesibles para algunas funciones que se crean dentro y se exportan. –
Me gustaría ver el código original que dio como resultado ese formulario. Apuesto a que si tuvieras ADVANCED_OPTIMIZATIONS habilitadas, eliminaría por completo la función. –
@ user1689607 la función era un poco diferente y mucho más larga.Lo hice breve para hacerlo limpio en SO. Más preguntas sobre el concepto que este ejemplo específico –