Хорошей практикой считается не зашивать какие-то значения в модуль, а передавать их параметром самого модуля (то есть параметром вызывающейся на месте функции):
;(function(arg1, arg2) { // параметры попадают в переменные
})(1, 2); // передаем какие-то параметры
Давайте посмотрим на примере. Пусть у нас есть див с числом и кнопка:
<div id="div">3</div>
<button id="btn">click me</button>
Пусть у нас также есть некоторый модуль:
;(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);
});
})();
Как вы видите, селекторы наших элементов жестко зашиты в коде модуля. Более удачным решением будет передать их параметрами модуля - так в дальнейшем мы легко сможем их изменить. Исправим наш модуль:
;(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');
Дана кнопка и три инпута, в которые вводятся числа. По нажатию на кнопку выведите в консоль сумму введенных чисел. Реализуйте задачу с помощью модуля.