JavaScriptда closures орқали модуллар

Юқорида тавсифланган муаммо ҳар қандай дастурлаш тили учун хос. Ҳал қилиш учун ≪модуллар≪ деб аталувчилар қўлланилади.

Модул - ўзининг ичидаги ўзгарувчи ва функциялар фақат унинг ичида кўринадиган ва ташқарида ҳеч кимга таъсир қилмаслиги учун яратилган маълум бир контрукциядир.

JavaScriptда бир неча турдаги модуллар мавжуд. Энг содда ≪closures орқали модуллар≪ функцияни жойида чақириш орқали яратилади, мана бу щаклда:

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

Бундай модулда яратилган ўзгарувчи ва функциялар ушбу модулдан ташқарида кўринмайди:

javascript;(function() {
  let str = 'модул ўзгарувчиси';
  
  function func() {
    alert('модул функцияси');
  }
})();

// Бу ерда модул ўзгарувчи ва функциялари ножой:
alert(str);
alert(func);