Передача параметров в модуль через замыкания в JavaScript

Хорошей практикой считается не зашивать какие-то значения в модуль, а передавать их параметром самого модуля (то есть параметром вызывающейся на месте функции):

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

Дана кнопка и три инпута, в которые вводятся числа. По нажатию на кнопку выведите в консоль сумму введенных чисел. Реализуйте задачу с помощью модуля.

enru