Przekazywanie parametrów do modułu poprzez domknięcia w JavaScript

Dobrą praktyką jest nie wpisywanie na sztywno wartości do modułu, a przekazywanie ich jako parametr samego modułu (czyli parametr natychmiastowo wywoływanej funkcji):

javascript;(function(arg1, arg2) { // parametry trafiają do zmiennych
  
})(1, 2); // przekazujemy jakieś parametry

Spójrzmy na przykład. Załóżmy, że mamy div z liczbą i przycisk:

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

Załóżmy, że mamy również pewien moduł:

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);
  });
})();

Jak widać, selektory naszych elementów są na sztywno wpisane w kodzie modułu. Lepszym rozwiązaniem byłoby przekazanie ich jako parametry modułu - dzięki temu w przyszłości łatwo będziemy mogli je zmienić. Poprawmy nasz moduł:

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

Dany jest przycisk i trzy inputy, do których wprowadza się liczby. Po kliknięciu przycisku wypisz w konsoli sumę wprowadzonych liczb. Zrealizuj zadanie za pomocą modułu.