Proporrò un terzo percorso, per inserire entrambe le funzioni all'interno di una chiusura. Sembrerebbe:
var functionA = (function(){
function functionB() {
// do stuff...
}
function functionA() {
// do stuff...
functionB();
// do stuff...
}
return functionA;
})();
Creiamo la chiusura avvolgendo la dichiarazione di entrambe le funzioni in un IIFE . Il valore di ritorno di IIFE è la funzione pubblica, memorizzata in una variabile del nome per la funzione. La funzione pubblica può essere invocata esattamente nello stesso modo in cui è stata dichiarata come funzione globale, ovvero functionA()
. Nota che il valore di ritorno è la funzione , non una chiamata alla funzione, quindi nessun paren- sio alla fine.
Inclinando le due funzioni in questo modo, functionB
è ora completamente privato e non è possibile accedere al di fuori della chiusura, ma è visibile solo a functionA
. Non è ingombrante lo spazio dei nomi globale, e non ingombrano la definizione di functionA
.