Prenos parametrov do modulu pomocou uzatvorení v JavaScripte
Dobrou praxou je nezapájať nejaké hodnoty priamo do modulu, ale odovzdávať ich ako parametre modulu (teda ako parametre funkcie volanej na mieste):
;(function(arg1, arg2) { // parametre sa dostanú do premenných
})(1, 2); // odovzdávame nejaké parametre
Pozrime sa na príklad. Majme div s číslom a tlačidlo:
<div id="div">3</div>
<button id="btn">click me</button>
Nech máme tiež nejaký modul:
;(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);
});
})();
Ako vidíte, selektory našich prvkov sú pevne zabudované v kóde modulu. Lepším riešením by bolo odovzdať ich ako parametre modulu - takto ich v budúcnosti môžeme ľahko zmeniť. Upravme náš modul:
;(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');
Dané tlačidlo a tri vstupné polia, do ktorých sa vkladajú čísla. Po kliknutí na tlačidlo vypíšte do konzoly súčet zadaných čísel. Realizujte úlohu pomocou modulu.