Експорт на променливи и функции в модули чрез затваряния в 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('функция на модула');
  }
})();

Експортирайте една от променливите и две произволни функции.