JavaScriptте модулдерде closure аркылуу өзгөрмөлөр жана функцияларды экспорттоо

Кээде модулдүн кээ бир өзгөрмөлөрү жана функциялары тыштан жеткиликтүү болушу керек. Бул кандайча жасалышына карап чыгалы. Төмөндөгүдөй модул болсун:

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

Келгиле, биздин func функциябызды экспорттойлу. Бул үчүн аны браузердин курамына кирген window объектисинин касиетине жазабыз:

javascript;(function() {
  let str = 'модулдун өзгөрмөсү';
  
  function func() {
    alert('модулдун функциясы');
  }
  
  window.func = func;
})();

Эми биз модулдин сыртынан өз функциябызды чакыра алабыз:

javascript;(function() {
  let str = 'модулдун өзгөрмөсү';
  
  function func() {
    alert('модулдун функциясы');
  }
  
  window.func = func;
})();

window.func(); // 'модулдун функциясы' дегенди көрсөтөт

Бул учурда функцияны window объектисинин касиети катары чакыруу милдеттүү эмес:

javascript;(function() {
  let str = 'модулдун өзгөрмөсү';
  
  function func() {
    alert('модулдун функциясы');
  }
  
  window.func = func;
})();

func(); // 'модулдун функциясы' дегенди көрсөтөт
Задание 1

Төмөндөгү модул берилген:

javascript;(function() {
  let str1 = 'модулдун өзгөрмөсү';
  let str2 = 'модулдун өзгөрмөсү';
  let str3 = 'модулдун өзгөрмөсү';
  
  function func1() {
    alert('модулдун функциясы');
  }
  function func2() {
    alert('модулдун функциясы');
  }
  function func3() {
    alert('модулдун функциясы');
  }
})();

Өзгөрмөлөрдүн бирин жана эки каалаган функцияны сыртка экспорттогула.