Eksport zmiennych i funkcji w modułach poprzez domknięcia w JavaScript

Czasami trzeba sprawić, aby niektóre zmienne i funkcje modułu były dostępne na zewnątrz. Przyjrzyjmy się, jak to się robi. Załóżmy, że mamy następujący moduł:

javascript;(function() {
  let str = 'zmienna modułu';
  
  function func() {
    alert('funkcja modułu');
  }
})();

Wyeksportujmy naszą funkcję func. Aby to zrobić, zapiszmy ją jako właściwość wbudowanego w przeglądarkę obiektu window:

javascript;(function() {
  let str = 'zmienna modułu';
  
  function func() {
    alert('funkcja modułu');
  }
  
  window.func = func;
})();

Teraz możemy wywołać naszą funkcję z zewnątrz modułu:

javascript;(function() {
  let str = 'zmienna modułu';
  
  function func() {
    alert('funkcja modułu');
  }
  
  window.func = func;
})();

window.func(); // wyświetli 'funkcja modułu'

Przy tym niekoniecznie trzeba wywoływać funkcję jako właściwość obiektu window:

javascript;(function() {
  let str = 'zmienna modułu';
  
  function func() {
    alert('funkcja modułu');
  }
  
  window.func = func;
})();

func(); // wyświetli 'funkcja modułu'
Задание 1

Dany jest następujący moduł:

javascript;(function() {
  let str1 = 'zmienna modułu';
  let str2 = 'zmienna modułu';
  let str3 = 'zmienna modułu';
  
  function func1() {
    alert('funkcja modułu');
  }
  function func2() {
    alert('funkcja modułu');
  }
  function func3() {
    alert('funkcja modułu');
  }
})();

Wyeksportuj na zewnątrz jedną ze zmiennych i dwie dowolne funkcje.