Exportando variáveis e funções em módulos através de closures em JavaScript

Às vezes é necessário que algumas variáveis e funções do módulo fiquem disponíveis externamente. Vamos ver como isso é feito. Suponha que temos o seguinte módulo:

javascript;(function() {
  let str = 'variável do módulo';
  
  function func() {
    alert('função do módulo');
  }
})();

Vamos exportar nossa função func. Para isso, vamos atribuí-la a uma propriedade do objeto global window (no navegador):

javascript;(function() {
  let str = 'variável do módulo';
  
  function func() {
    alert('função do módulo');
  }
  
  window.func = func;
})();

Agora podemos chamar nossa função de fora do módulo:

javascript;(function() {
  let str = 'variável do módulo';
  
  function func() {
    alert('função do módulo');
  }
  
  window.func = func;
})();

window.func(); // exibirá 'função do módulo'

Nesse caso, não é necessário chamar a função como uma propriedade do objeto window:

javascript;(function() {
  let str = 'variável do módulo';
  
  function func() {
    alert('função do módulo');
  }
  
  window.func = func;
})();

func(); // exibirá 'função do módulo'
Задание 1

Dado o seguinte módulo:

javascript;(function() {
  let str1 = 'variável do módulo';
  let str2 = 'variável do módulo';
  let str3 = 'variável do módulo';
  
  function func1() {
    alert('função do módulo');
  }
  function func2() {
    alert('função do módulo');
  }
  function func3() {
    alert('função do módulo');
  }
})();

Exporte para fora uma das variáveis e duas funções quaisquer.