In primo luogo, le "funzioni di auto-chiamata" non sono in realtà auto-chiamate. So che è ciò che le persone della comunità Javascript chiamano, ma è davvero fuorviante; le funzioni non si riferiscono mai a se stesse e in effetti il più delle volte non c'è modo di chiamare quella particolare funzione più di una volta. Se fossero effettivamente funzioni di auto-chiamata, le funzioni ricorsive sarebbero state il modo migliore per nominarle.
Ciò che realmente hai sono (di solito) lambda immediatamente eseguiti i cui risultati sono memorizzati in una variabile al fine di limitare l'ambito dei loro interni. "IEL" non è così accattivante come "funzioni di auto-chiamata", quindi suppongo sia per questo che il vero nome non sia mai stato preso.
Il fatto è che è tutto troppo basso livello; è un dettaglio di implementazione a cui non importa a nessuno (è come dire "here be for loops"). In genere, quando si utilizzano le funzioni di esecuzione immediata, la ragione perché le si sta utilizzando è perché si sta creando un modulo, che ha bisogno del proprio spazio dei nomi.
Se è così, invece di dire "funzioni autoeseguibili", dovresti dire "questo script contiene moduli che fanno < stuff >". Altrimenti, dovresti capire cosa stai cercando di fare con le funzioni, e dire che è quello che c'è nel tuo script.
Ora, il motivo per cui usi i moduli in Javascript è perché altrimenti tutto va nella portata globale. Quelle altre funzioni che stai scrivendo, che non saranno nei moduli (o qualunque cosa tu decida di essere), finiranno qui. Quindi usa questo - "questo file di script contiene entrambi i moduli che fanno < stuff > e le funzioni globali che fanno < more stuff >".