Módulos via Closures em JavaScript
O problema descrito acima é característico de qualquer linguagem de programação. Como solução, são utilizados os chamados módulos.
Um módulo é uma construção feita de modo que as variáveis e funções dessa construção sejam visíveis apenas dentro dele e não interfiram em nada externamente.
Em JavaScript, existem vários tipos de módulos. Os módulos via closures mais simples são criados usando uma função imediatamente invocada (IIFE), assim:
;(function() {
// código do módulo aqui
})();
Variáveis e funções criadas dentro de tal módulo não serão visíveis fora dele:
;(function() {
let str = 'variável do módulo';
function func() {
alert('função do módulo');
}
})();
// Aqui as variáveis e funções do módulo não estão acessíveis:
alert(str);
alert(func);