Экспарт зменных і функцый у модулях праз замыканні ў JavaScript

Часам трэба зрабіць так, каб некаторыя зменныя і функцыі модуля былі даступныя звонку. Давайце паглядзім, як гэта робіцца. Хай у нас ёсць наступны модуль:

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('функцыя модуля');
  }
})();

Экспартуйце звонку адну з зменных і две любыя функцыі.