No estoy completamente seguro de si fue intencionado, pero Javascript, siendo esencialmente una especie de lenguaje funcional, me sorprendería si no.
Es solo un subproducto de cómo funciona Javascript, ¿entonces tal vez no está previsto?
Amo Javascript y amo los IIFE. Es un patrón que me permite usar solo una variable global en mi desarrollo front-end.
Tenga en cuenta que incluso un lenguaje no funcional como Java puede hacer esencialmente lo mismo con una clase interna, la sintaxis solo parece una pequeña diferencia.
- ¿Qué debería importarme al diseñar un juego móvil?
- ¿Qué puedo hacer después de seguir BBA en diseño estratégico y gestión de Parsons School of Design?
- Cómo diseñar caldera
- ¿Es Design Thinking solo una tendencia transitoria o está aquí para quedarse?
- Soy programador, que acaba de comenzar a hacer front-end. ¿Qué debo saber sobre diseño y UX?
public void sortAnswers () {
// un camino pre java de 8
Comparador comparador = nuevo Comparador () {
public int compare (Respuesta a1, Respuesta a2) {
return (a1.getVersion () – a2.getVersion ());
}
};
// un java 8 way
Comparador comparador2 = (x, y) -> {return (x.getVersion () – y.getVersion ()); };
Collections.sort (respuestas, comparador);
Collections.sort (respuestas, comparador2);
}
Usted define, luego instancia.
Volviendo a Javascript, cuando defina la función, puede llamarla, y eso es exactamente lo que sucede.
Aplicación var = {};
Application.sortService = (function () {
var sortByVer = función (a1, a2) {
return (a1.version – a2.version);
},
sortAnswers = function (respuestas) {
respuestas.sort (sortByVer);
volver (respuestas);
};
regreso ({
sortAnswers: sortAnswers
});
}) ();
var answerArr = []; // lleno de datos en otro lugar
Application.sortService.sortAnswers (answerArr);
De todos modos, supongo que el IIFE fue una consecuencia intencional, pero podría estar equivocado. Es genial para la encapsulación y el desarrollo modular en Javascript, simplemente no creo que el patrón IIFE se haya dado cuenta hasta más tarde.