Předávání parametrů do modulu přes uzávěry v JavaScriptu

Dobrou praxí je nezakotvovat nějaké hodnoty přímo v modulu, ale předat je jako parametr modulu (tedy jako parametr okamžitě volané funkce):

javascript;(function(arg1, arg2) { // parametry se uloží do proměnných
  
})(1, 2); // předáváme nějaké parametry

Podívejme se na příklad. Předpokládejme, že máme prvek div s číslem a tlačítko:

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

Předpokládejme také, že máme nějaký 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);
  });
})();

Jak vidíte, selektory našich prvků jsou pevně zakotveny v kódu modulu. Lepším řešením by bylo předat je jako parametry modulu - tak je v budoucnu snadno změníme. Opravme 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

Je dáno tlačítko a tři vstupní pole, do kterých se zadávají čísla. Po kliknutí na tlačítko vypište do konzole součet zadaných čísel. Implementujte úlohu pomocí modulu.