Dəyişənlərin və funksiyaların JavaScript modullarında closure-lar vasitəsilə ixracı

Bəzən modulun bəzi dəyişənlərinin və funksiyalarının xaricdən əlçatan olmasını təmin etmək lazım gəlir. Gəlin bunun necə edildiyinə baxaq. Tutaq ki, bizim aşağıdakı modulumuz var:

javascript;(function() {
  let str = 'modul dəyişəni';
  
  function func() {
    alert('modul funksiyası');
  }
})();

Gəlin func funksiyamızı ixrac edək. Bunun üçün onu brauzerdə daxili olan window obyektinin xüsusiyyətinə yazaq:

javascript;(function() {
  let str = 'modul dəyişəni';
  
  function func() {
    alert('modul funksiyası');
  }
  
  window.func = func;
})();

İndi biz funksiyamızı modulun xaricindən çağıra bilərik:

javascript;(function() {
  let str = 'modul dəyişəni';
  
  function func() {
    alert('modul funksiyası');
  }
  
  window.func = func;
})();

window.func(); // 'modul funksiyası' çap edəcək

Eyni zamanda funksiyanı mütləq window obyektinin xüsusiyyəti kimi çağırmaq lazım deyil:

javascript;(function() {
  let str = 'modul dəyişəni';
  
  function func() {
    alert('modul funksiyası');
  }
  
  window.func = func;
})();

func(); // 'modul funksiyası' çap edəcək
Задание 1

Aşağıdakı modul verilmişdir:

javascript;(function() {
  let str1 = 'modul dəyişəni';
  let str2 = 'modul dəyişəni';
  let str3 = 'modul dəyişəni';
  
  function func1() {
    alert('modul funksiyası');
  }
  function func2() {
    alert('modul funksiyası');
  }
  function func3() {
    alert('modul funksiyası');
  }
})();

Dəyişənlərdən birini və istənilən iki funksiyanı xaricə ixrac edin.