JavaScriptにおけるクロージャーを介したモジュールへのパラメーター渡し

モジュール内部に値を直接書き込むのではなく、 モジュール自体のパラメーター(つまり即時呼び出し関数のパラメーター)として 渡すことが良い習慣とされています:

javascript;(function(arg1, arg2) { // パラメーターは変数に入る
  
})(1, 2); // 何らかのパラメーターを渡す

例を見てみましょう。数字を表示するdivとボタンがあるとします:

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

また、次のようなモジュールがあるとします:

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

ご覧の通り、要素のセレクターは モジュールのコード内に直接書き込まれています。 より良い解決策は、それらをモジュールのパラメーターとして渡すことです - そうすれば後で簡単に変更できるようになります。 モジュールを修正しましょう:

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

ボタン1つと、数字を入力する3つのinputがあります。 ボタンをクリックすると、入力された数字の合計を コンソールに出力してください。 モジュールを使用してこのタスクを実装してください。