Parameetrite edastamine moodulile sulundite kaudu JavaScriptis
Hea tava on mitte koodida mingeid väärtusi moodulisse sisse, vaid edastada need mooduli enda parameetrina (ehk koheselt väljakutsuva funktsiooni parameetrina):
;(function(arg1, arg2) { // parameetrid satuvad muutujatesse
})(1, 2); // edastame mõned parameetrid
Vaatame näidet. Olgu meil div arvuga ja nupp:
<div id="div">3</div>
<button id="btn">click me</button>
Olgu meil samuti mõni moodul:
;(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);
});
})();
Nagu näete, on meie elementide valijad jäigalt kooditud mooduli koodi. Paremaks lahenduseks oleks need edastada mooduli parameetritena - nii saame neid tulevikus lihtsalt muuta. Parandame oma moodulit:
;(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');
Antud on nupp ja kolm sisendvälja, kuhu sisestatakse arvud. Nupu vajutamisel kuva konsoolis sissetoodud arvude summa. Realiseeri ülesanne mooduli abil.