Модули чрез затваряния в JavaScript

Описаният по-горе проблем е характерен за всеки език за програмиране. Като решение се използват така наречените модули.

Модулът представлява някаква конструкция, направена така, че променливите и функциите на тази конструкция да са видими само вътре в нея и да не пречат на нищо отвън.

В JavaScript съществуват няколко типа модули. Най-простите модули чрез затваряния се създават с помощта на незабавно извиквана функция, ето така:

javascript;(function() {
  // тук кода на модула
})();

Променливите и функциите, създадени в такъв модул, няма да бъдат видими отвън на този модул:

javascript;(function() {
  let str = 'променлива на модула';
  
  function func() {
    alert('функция на модула');
  }
})();

// Тук променливите и функциите на модула са недостъпни:
alert(str);
alert(func);