Vou propor um terceiro caminho, para colocar as duas funções em um fechamento. Seria como:
var functionA = (function(){
function functionB() {
// do stuff...
}
function functionA() {
// do stuff...
functionB();
// do stuff...
}
return functionA;
})();
Criamos o fechamento envolvendo a declaração de ambas as funções em um IIFE . O valor de retorno do IIFE é a função pública, armazenada em uma variável do nome da função. A função pública pode ser chamada exatamente da mesma maneira como se fosse declarada como uma função global, ie functionA()
. Observe que o valor de retorno é a função , não uma chamada para a função, portanto, não há parênteses no final.
Ao agrupar as duas funções dessa maneira, functionB
agora é completamente privado e não pode ser acessado fora do fechamento, mas é visível apenas para functionA
. Não está bagunçando o espaço para nome global e não está bagunçando a definição de functionA
.