Parametrien välittäminen moduuliin sulkeumien kautta JavaScriptissä

Hyvänä käytänteenä pidetään, että joitain arvoja ei kovakoodata moduuliin, vaan ne välitetään moduulin parametrina (eli välittömästi kutsuttavan funktion parametrina):

javascript;(function(arg1, arg2) { // parametrit menevät muuttujiin
  
})(1, 2); // välitämme joitain parametreja

Katsotaanpa esimerkkiä. Oletetaan, että meillä on div numeroineen ja painike:

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

Oletetaan myös, että meillä on jokin moduuli:

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

Kuten näette, elementtiemme valitsimet ovat kovakoodattu moduulin koodiin. Parempi ratkaisu olisi välittää ne moduulin parametreina - näin voimme tulevaisuudessa helposti muuttaa niitä. Korjataan moduulimme:

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

Annettuna painike ja kolme syöttökenttää, joihin syötetään numeroita. Painiketta painettaessa tulosta konsoliin annettujen numeroiden summa. Toteuta tehtävä moduulin avulla.