Voy a proponer un tercer camino, para colocar ambas funciones dentro de un cierre. Se vería así:
var functionA = (function(){
function functionB() {
// do stuff...
}
function functionA() {
// do stuff...
functionB();
// do stuff...
}
return functionA;
})();
Creamos el cierre envolviendo la declaración de ambas funciones en un IIFE . El valor de retorno del IIFE es la función pública, almacenada en una variable del nombre de la función. La función pública se puede invocar exactamente de la misma manera que si se declarara como una función global, es decir functionA()
. Tenga en cuenta que el valor de retorno es la función , no una llamada a la función, por lo tanto, no hay parens al final.
Al envolver las dos funciones de esta manera, functionB
ahora es completamente privado y no se puede acceder fuera del cierre, pero solo es visible para él functionA
. No está abarrotando el espacio de nombres global, y no está abarrotando la definición de functionA
.