Tres razones principales en las que puedo pensar:
- Acceso al alcance de los padres
- Intimidad
- Reducción de nombres definidos en ámbitos más altos
Acceso al ámbito principal: las definiciones de funciones en línea permiten que el código en línea tenga acceso a las variables definidas en los ámbitos principales. Esto puede ser muy útil para muchas cosas y puede reducir la cantidad o la complejidad del código si se hace correctamente.
Si coloca el código en una función definida fuera de este ámbito y luego llama al código, entonces tendría que pasar cualquier estado primario al que quisiera acceder a la función.
Privacidad: el código dentro de una definición anónima en línea es más privado y no puede ser llamado por otro código.
Reducción de nombres definidos en ámbitos más altos: Esto es más importante cuando se opera en el ámbito global, pero una declaración anónima en línea evita tener que definir un nuevo símbolo en el ámbito actual. Dado que Javascript no requiere de forma nativa el uso de espacios de nombres, es aconsejable evitar definir más símbolos globales de los mínimos necesarios.
Editorial: Parece haberse convertido en algo cultural en Javascript, donde declarar algo anónimamente en línea de alguna manera se considera "mejor" que definir una función y llamarla incluso cuando no se utiliza el acceso de ámbito primario. Sospecho que esto se debió inicialmente al problema de la contaminación del espacio de nombres global en Javascript, luego quizás debido a problemas de privacidad. Pero ahora se ha convertido en algo cultural y puede verse expresado en muchos cuerpos públicos de código (como los que usted menciona).
En lenguajes como C ++, la mayoría probablemente consideraría una práctica menos que ideal tener una función gigante que se extienda a través de muchas páginas / pantallas. Por supuesto, C ++ tiene un espacio de nombres incorporado, no proporciona acceso al ámbito primario y tiene características de privacidad, por lo que puede estar motivado por completo por la legibilidad / mantenibilidad, mientras que Javascript tiene que usar la expresión de código para lograr la privacidad y el acceso al ámbito primario. Entonces, JS parece haber sido motivado en una dirección diferente y se ha convertido en algo cultural dentro del idioma, incluso cuando las cosas que motivaron esa dirección no son necesarias en un caso específico.