Passaggio di parametri al modulo attraverso le chiusure in JavaScript

È considerata una buona pratica non incorporare valori all'interno del modulo, ma passarli come parametri al modulo stesso (cioè come parametri della funzione richiamata immediatamente):

javascript;(function(arg1, arg2) { // i parametri vengono assegnati alle variabili
  
})(1, 2); // passiamo alcuni parametri

Vediamo un esempio. Supponiamo di avere un div con un numero e un pulsante:

html<div id="div">3</div>
<button id="btn">click me</button>

Supponiamo inoltre di avere un certo modulo:

javascript;(function() {
  let div = document.querySelector('#div');
  let btn = document.querySelector('#btn');
  
  function func(num) {
    return num * num;
  }
  
  btn.addEventListener('click', function() {
    div.textContent = func(div.textContent);
  });
})();

Come puoi vedere, i selettori dei nostri elementi sono rigidamente incorporati nel codice del modulo. Una soluzione migliore sarebbe passarli come parametri al modulo - in questo modo in futuro potremmo modificarli facilmente. Correggiamo il nostro modulo:

javascript;(function(selector1, selector2) {
  let div = document.querySelector(selector1);
  let btn = document.querySelector(selector2);
  
  function func(num) {
    return num * num;
  }
  
  btn.addEventListener('click', function() {
    div.textContent = func(div.textContent);
  });
})('#div', '#btn');
Задание 1

Dato un pulsante e tre input, in cui vengono inseriti numeri. Alla pressione del pulsante, stampa in console la somma dei numeri inseriti. Implementa il task utilizzando un modulo.