Модулі праз замыканні ў JavaScript

Апісаная вышэй праблема ўласцівая для любога мовы праграмавання. У якасці рашэння ўжываюць так званыя модулі.

Модуль уяўляе сабой нейкую канструкцыю, зробленую так, каб зменныя і функцыі гэтай канструкцыі былі бачныя толькі ўнутры яе і не перашкаджалі нікому звонку.

У JavaScript існуюць некалькі тыпаў модуляў. Самыя простыя модулі праз замыканні ствараюцца з дапамогай выкліку функцыі на месцы, вось так:

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

Зменныя і функцыі, створаныя ў такім модулі, не будуць бачныя звонку гэтага модуля:

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

// Тут зменныя і функцыі модуля недаступны:
alert(str);
alert(func);