Прослеђивање параметара у модул кроз затварања у JavaScript-у

Добра пракса је да се вредности не хард-кодирају у модулу, већ да се прослеђују као параметри самог модула (односно као параметри функције која се одмах позива):

javascript;(function(arg1, arg2) { // параметри улазе у променљиве
  
})(1, 2); // прослеђујемо неке параметре

Хајде да погледамо пример. Претпоставимо да имамо див са бројем и дугме:

html<div id="div">3</div>
<button id="btn">кликни ме</button>

Претпоставимо такође да имамо одређени модул:

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

Као што видите, селектори наших елемената су чврсто уграђени у коду модула. Боље решење би било да их проследимо као параметре модула - тако ћемо у будућности лако моћи да их изменимо. Исправимо наш модул:

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

Дато је дугме и три поља за унос, у која се уносе бројеви. При клику на дугме, исписати у конзолу збир унетих бројева. Реализујте задатак помоћу модула.