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

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

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

Ајде да погледнеме на пример. Да претпоставиме дека имаме div со број и копче:

html<div id="div">3</div>
<button id="btn">click me</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

Дадено е копче и три инпута, во кои се внесуваат броеви. При притискање на копчето, испечатете ја во конзолата сумата на внесените броеви. Реализирајте ја задачата со помош на модул.