Prosleđivanje parametara u modul kroz zatvorenja u JavaScriptu

Dobra praksa je da se određene vrednosti ne ugrađuju direktno u modul, već da se prosleđuju kao parametri samog modula (odnosno, kao parametri funkcije koja se neposredno poziva):

javascript;(function(arg1, arg2) { // parametri postaju promenljive
  
})(1, 2); // prosleđujemo neke parametre

Pogledajmo na primeru. Pretpostavimo da imamo div sa brojem i dugme:

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

Neka takođe imamo određeni 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);
  });
})();

Kao što vidite, selektori naših elemenata su kruto ugrađeni u kod modula. Bolje rešenje bi bilo da ih prosledimo kao parametre modula - tako ćemo ih moći lako da promenimo u budućnosti. Ispravimo naš 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

Data su dugme i tri polja za unos (input) u koja se unose brojevi. Klikom na dugme ispišite u konzolu zbir unetih brojeva. Realizujte zadatak pomoću modula.