Prenos parametrov do modulu pomocou uzatvorení v JavaScripte

Dobrou praxou je nezapájať nejaké hodnoty priamo do modulu, ale odovzdávať ich ako parametre modulu (teda ako parametre funkcie volanej na mieste):

javascript;(function(arg1, arg2) { // parametre sa dostanú do premenných
  
})(1, 2); // odovzdávame nejaké parametre

Pozrime sa na príklad. Majme div s číslom a tlačidlo:

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

Nech máme tiež nejaký modul:

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

Ako vidíte, selektory našich prvkov sú pevne zabudované v kóde modulu. Lepším riešením by bolo odovzdať ich ako parametre modulu - takto ich v budúcnosti môžeme ľahko zmeniť. Upravme náš modul:

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

Dané tlačidlo a tri vstupné polia, do ktorých sa vkladajú čísla. Po kliknutí na tlačidlo vypíšte do konzoly súčet zadaných čísel. Realizujte úlohu pomocou modulu.