Извоз променљивих и функција у модулима преко затварања у 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('функција модула');
  }
})();

Извезете један од променљивих и било које две функције.