Esportazione di variabili e funzioni nei moduli tramite closure in JavaScript

A volte è necessario che alcune variabili e funzioni del modulo siano accessibili dall'esterno. Vediamo come si fa. Supponiamo di avere il seguente modulo:

javascript;(function() {
  let str = 'variabile del modulo';
  
  function func() {
    alert('funzione del modulo');
  }
})();

Esportiamo la nostra funzione func. Per farlo, la assegniamo a una proprietà dell'oggetto integrato nel browser window:

javascript;(function() {
  let str = 'variabile del modulo';
  
  function func() {
    alert('funzione del modulo');
  }
  
  window.func = func;
})();

Ora possiamo chiamare la nostra funzione dall'esterno del modulo:

javascript;(function() {
  let str = 'variabile del modulo';
  
  function func() {
    alert('funzione del modulo');
  }
  
  window.func = func;
})();

window.func(); // visualizzerà 'funzione del modulo'

Inoltre, non è obbligatorio chiamare la funzione come proprietà dell'oggetto window:

javascript;(function() {
  let str = 'variabile del modulo';
  
  function func() {
    alert('funzione del modulo');
  }
  
  window.func = func;
})();

func(); // visualizzerà 'funzione del modulo'
Задание 1

Dato il seguente modulo:

javascript;(function() {
  let str1 = 'variabile del modulo';
  let str2 = 'variabile del modulo';
  let str3 = 'variabile del modulo';
  
  function func1() {
    alert('funzione del modulo');
  }
  function func2() {
    alert('funzione del modulo');
  }
  function func3() {
    alert('funzione del modulo');
  }
})();

Esporta all'esterno una delle variabili e due funzioni a scelta.